autodoc-next-prospectus-audit · git:20261014.75a9a41 · 2026-10-14 · sha256 f5fb9abdc35e29ad
autodoc-next-prospectus-audit git:20261014.75a9a41A
Immutable. This exact content never changes and is served at /api/v1/blob/f5fb9abdc35e29ad.
---
name: autodoc-next-prospectus-audit
description: Audit one local prospectus PDF, DOC, or DOCX through PDRouter and download the annotated document with AutoDoc NEXT2.0.
metadata:
{
'author': 'PAODINGAI',
'version': '1.0.0',
'openclaw':
{
'requires':
{
'env': ['PAODINGAI_API_KEY'],
'bins': ['node'],
},
},
}
---
# AutoDoc NEXT2.0
Run the JavaScript workflow that submits one local prospectus to the AutoDoc NEXT2.0 API through PDRouter
(`POST /openapi/autodoc-next/audits`), polls its JSON status, and downloads the annotated result in a
separate explicit command.
## Installation
```bash
npx skills add PaodingAI/skills
```
Configure the PDRouter client credentials before running the Skill:
```bash
export PAODINGAI_API_KEY="<your-pdrouter-api-key>"
export PAODINGAI_API_BASE_URL="https://platform.paodingai.com/"
```
## Usage
```bash
node skills/autodoc-next-prospectus-audit/scripts/audit_document.mjs start <local-file-path> [--max-wait-seconds <seconds>] [--json]
node skills/autodoc-next-prospectus-audit/scripts/audit_document.mjs watch <request_id> [--max-wait-seconds <seconds>] [--json]
node skills/autodoc-next-prospectus-audit/scripts/audit_document.mjs status <request_id> [--json]
node skills/autodoc-next-prospectus-audit/scripts/audit_document.mjs download <request_id> [--output-dir <dir>] [--json]
```
`start` validates and uploads the local file, then continuously polls until a terminal state. `watch`
continues polling an existing request after a local interruption. Neither command downloads a file.
`status` performs one foreground status query. Only `download` queries the terminal result and downloads
the annotated file after verifying its size and SHA-256. Return the `output_file` absolute path only from
the download command.
Use `watch <request_id>` after a client interruption or polling connection failure. Watch mode does not
read or upload the source document again and never downloads the result. Use `status <request_id>` when
the user wants a current status without starting a long-running watcher. Add `--max-wait-seconds <seconds>`
only when the user explicitly wants to limit a start/watch session.
Environment variables:
- `PAODINGAI_API_KEY`: Required. Bearer API key for PDRouter requests.
- `PAODINGAI_API_BASE_URL`: Optional. PDRouter origin URL, such as `https://platform.paodingai.com/`. Defaults to that production origin.
- `AUTODOC_MAX_WAIT_SECONDS`: Optional positive integer. Limits the current polling session only; no total waiting limit is applied by default.
The client uses `${PAODINGAI_API_BASE_URL%/}/openapi/autodoc-next/audits` for submission, `${PAODINGAI_API_BASE_URL%/}/openapi/autodoc-next/status` for polling, and `${PAODINGAI_API_BASE_URL%/}/openapi/autodoc-next/download` for result download.
`AUTODOC_OUTPUT_DIR` optionally changes the output directory. Treat authentication values as confidential.
## When to Use
- Use this Skill when the user asks to audit or review one local prospectus document.
- Supported input formats are PDF, DOC, and DOCX. Only one file is accepted per invocation.
- When the user asks to save the result beside the input, pass `--output-dir` with the input file's parent directory.
- The result is an annotated PDF for PDF input, or an annotated DOCX for DOC/DOCX input.
## Execution Constraints
- Run upload/polling and download through the separate commands in `scripts/audit_document.mjs`.
- Route submission, status polling, and result download through the script's `AutoDocNextClient`, which owns the PDRouter base URL, service prefix, authentication headers, and HTTP transport.
- The script performs local validation, submits one multipart request, polls the protected JSON status response,
or performs an explicit protected result download with size and SHA-256 verification.
- Progress and diagnostics are written to stderr. User-facing diagnostics contain sanitized status and error information; API keys, JWTs, and request secrets remain confidential.
- Tool output is implementation detail, not the user-facing progress report. After each meaningful
command, wait, or polling response, interpret the returned status instead of relaying a raw
command output or an unprocessed stdout/stderr block.
## User-Visible Progress Reporting (Required)
The `start`/`watch` client runs as a host-managed background task. While the AI session is active,
inspect its output and send a short ordinary assistant message after each meaningful state change.
When the user asks for an update, run the foreground `status` command instead of assuming the task
is stuck or relying on buffered background output.
- Report these phases in order when applicable: local file validation, upload/submission, queued,
auditing, audit completed/failed, explicit result download, and checksum verification.
- Each update must state the current phase and the concrete information available from the latest
response, such as a sanitized service status, event/log text, processed item count, percentage,
elapsed time, retry number, or the `request_id`. Do not invent a percentage, ETA, or internal
detail that the tool or API did not return.
- When the service returns a new progress event, summarize that event in Chinese in one concise
sentence. Preserve the event order, and do not repeat identical events.
- When polling returns no new event, do not emit repeated empty updates. After a meaningful
interval, emit a heartbeat such as `审核仍在进行,当前状态:<status>,已等待约 <duration>` so
the user knows the session is still actively tracking the task.
- Before every continued wait or poll, make the next action explicit, for example `审核尚未完成,
将继续查询状态;当前 request_id:...`. This is a progress update, not a terminal response.
- When the audit reaches a terminal success, state that the audit is complete but the result has not
been downloaded. After an explicit download, report the checksum result and absolute `output_file`
path. On failure, state the terminal phase, sanitized reason, and retained `request_id`.
- Never present raw tool output, a process identifier, or `still running` alone as the progress
report. Never claim the annotated file is available locally until the explicit download and its
integrity checks pass.
## Script Behavior
1. Require `PAODINGAI_API_KEY` before execution.
2. Resolve `PAODINGAI_API_BASE_URL`, with `https://platform.paodingai.com` as the default.
3. Validate that the input is one regular, non-empty PDF, DOC, or DOCX file no larger than 100 MiB and that its content signature matches its extension.
4. Generate the audit `request_id` and send exactly one multipart request with a single `file` field to `POST /openapi/autodoc-next/audits`, using `Authorization: Bearer <token>` and `X-Request-Id: <audit request_id>`.
5. Keep that audit `request_id` and poll `GET /openapi/autodoc-next/status?request_id=<audit request_id>` until it reports `completed`/`succeeded` or a failure state. Each polling round uses a new `X-Request-Id`; retries of that same round reuse it. A returned `status_url` may override the path, but its `request_id` query parameter is always replaced with the audit request ID. Preserve response order and interpret every user-safe progress, event, and log item returned by the status endpoint. After each new item or meaningful status change, convert it into a concise Chinese assistant progress update; do not expose raw tool output. Suppress exact duplicate events and high-frequency heartbeat entries, while emitting one user-facing processing heartbeat every 30 seconds when no meaningful event arrives.
6. `status <request_id>` performs one status request and returns the current state and latest progress. It never downloads.
7. `download <request_id>` first confirms a successful terminal result, then sends a GET to `/openapi/autodoc-next/download?request_id=<audit request_id>` with a new download `X-Request-Id`, verifies the declared size and SHA-256, and atomically writes the final file. Any returned same-origin `download_url` is forced to use the audit request ID in its query.
8. If `--output-dir` is supplied to `download`, write the result there; otherwise use `AUTODOC_OUTPUT_DIR` or `./autodoc-results`. Preserve an existing same-name file and save the new result with a numbered suffix such as `document(1).docx`.
9. Print stable JSON objects to stdout and write progress/errors to stderr. `start` prints an
immediate `accepted` object containing the `request_id`, followed by its terminal audit object;
`status` and `download` print one final object. The AI assistant must interpret these objects and
provide a human-readable summary; the JSON objects alone are not user progress updates.
## Long-running Execution
Large prospectus audits have no predictable maximum duration, so the client has no default total
polling timeout. Each status request has a 30-second timeout and transient failures are attempted up
to three times with the same status-call request ID; the URL continues to use the audit request ID.
Run `start` or `watch` as the host's managed background task so long audits continue without binding
the AI request to the audit duration. Those commands only poll and never download. Use the foreground
`status` command to show an intermediate state to the user, and use the foreground `download` command
only after a successful terminal status. Stopping the local watcher does not cancel the Lite task; use
`watch <request_id>` to resume polling later.
## Cancellation and Process Ownership (Required)
The local Node client must be managed explicitly by the host task runner. A cancelled assistant task
must not leave an unmanaged local process behind.
- Run `start`/`watch` through the host's managed background-task facility and retain the submitted
`request_id` and task handle. Run `status` and `download` as foreground commands.
- Do not make the script daemonize itself or spawn a second Node process. The host task runner owns
starting, observing, and terminating the background watcher.
- If the user cancels the local watcher, terminate the host-managed `start`/`watch` task and do not
start a download automatically. The remote task continues unless the service explicitly cancels it.
- Report the retained `request_id`; later use `status` for a one-time customer-visible update or
`watch` to restart continuous polling.
- A local interruption stops the client process; it does not prove that the remote Lite audit was
cancelled. Do not claim remote cancellation unless the service explicitly confirms it.
## Network and Sandbox Handling
- If DNS resolution, connection, or TLS negotiation fails, verify the configured hostname, DNS/hosts, certificate trust, and any required proxy.
- If a loopback address (`127.0.0.1`, `localhost`, or `::1`) or a private address is unreachable only from the sandbox, treat it as an execution-environment isolation issue. Request an approved sandbox-external execution context before submitting the audit.
- If the audit request reaches PDRouter but returns HTTP `404`, `401`, or another response, treat it as a service, authentication, or routing/configuration issue rather than a sandbox connectivity failure.
- For a customer-isolated environment, configure `PAODINGAI_API_BASE_URL` to its routable PDRouter OpenAPI base. The domain must resolve from the actual client sandbox, allow outbound HTTPS/443, have a trusted certificate, and expose the configured `autodoc-next` capability.
After an audit POST connection failure, preserve and report the returned `request_id`, then confirm
or watch that request according to the API contract before starting another audit.