@lazyingart/agintiflow 0.20.255 → 0.20.257-integration.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/aginti-document-worker-runtime-check.js +12 -0
- package/bin/aginti-document-worker.js +10 -0
- package/bin/aginti-execution-worker.js +26 -0
- package/bin/aginti-integration-analysis.js +7 -0
- package/docs/deep-research-engine.md +1 -31
- package/docs/model-selection.md +0 -2
- package/docs/runtime-modes-and-autonomy.md +0 -2
- package/docs/supervision-campaign-ledger.md +0 -123
- package/examples/document-worker/README.md +69 -0
- package/examples/document-worker/aginti-document-worker.service +67 -0
- package/examples/document-worker/document-worker.json +12 -0
- package/examples/document-worker/runtime-manifest.json +28 -0
- package/package.json +62 -14
- package/scripts/fixtures/integration-document-worker-smoke-fixture.js +155 -0
- package/scripts/github-hosted-release-environment.js +22 -0
- package/scripts/live-production-planner-smoke.js +70 -0
- package/scripts/smoke-capabilities.js +3 -28
- package/scripts/smoke-coding-tools.js +1 -698
- package/scripts/smoke-context-budget-recovery.js +42 -561
- package/scripts/smoke-deep-research.js +2 -216
- package/scripts/smoke-docker-command.js +0 -40
- package/scripts/smoke-dynamic-step-budget.js +3 -1010
- package/scripts/smoke-execution-policy.js +0 -40
- package/scripts/smoke-execution-runtime-bundle.js +248 -0
- package/scripts/smoke-execution-worker-server.js +138 -0
- package/scripts/smoke-execution-worker-systemd-boundary.js +545 -0
- package/scripts/smoke-execution-worker.js +733 -0
- package/scripts/smoke-integration-analysis-api-server.js +721 -0
- package/scripts/smoke-integration-analysis-coordinator.js +539 -0
- package/scripts/smoke-integration-analysis-planner.js +2336 -0
- package/scripts/smoke-integration-analysis-session-service.js +1741 -0
- package/scripts/smoke-integration-api.js +1607 -0
- package/scripts/smoke-integration-document-artifacts.js +303 -0
- package/scripts/smoke-integration-document-content.js +243 -0
- package/scripts/smoke-integration-document-revision.js +909 -0
- package/scripts/smoke-integration-document-session-broker.js +985 -0
- package/scripts/smoke-integration-document-worker-contract.js +197 -0
- package/scripts/smoke-integration-document-worker-cross-boundary.js +177 -0
- package/scripts/smoke-integration-document-worker-real-compile.js +125 -0
- package/scripts/smoke-integration-document-worker-server.js +261 -0
- package/scripts/smoke-integration-document-worker-service.js +175 -0
- package/scripts/smoke-integration-document-worker-store.js +327 -0
- package/scripts/smoke-integration-document-worker-systemd-boundary.js +335 -0
- package/scripts/smoke-integration-grounded-search.js +375 -0
- package/scripts/smoke-integration-production-mount.js +0 -33
- package/scripts/smoke-integration-retained-event-ledger-bundle.js +1 -6
- package/scripts/smoke-integration-retained-native-session-repository-state.js +0 -13
- package/scripts/smoke-integration-retained-session-state-store.js +3 -21
- package/scripts/smoke-integration-sandbox-profile.js +982 -0
- package/scripts/smoke-local-failure-recovery.js +1 -677
- package/scripts/smoke-model-roles.js +1 -161
- package/scripts/smoke-progressive-tool-selection.js +7 -970
- package/scripts/smoke-run-stdin.js +1 -7
- package/scripts/smoke-scs-evidence-visibility.js +0 -51
- package/scripts/smoke-tmux-tools.js +0 -20
- package/scripts/smoke-toolchain-docker.js +0 -10
- package/scripts/smoke-truthful-completion.js +0 -81
- package/scripts/smoke-web-api.js +0 -1
- package/scripts/smoke-web-port-fallback.js +3 -11
- package/scripts/smoke-web-ui.js +3 -8
- package/scripts/smoke-webapp-command.js +0 -1
- package/scripts/test-document-worker-fixture.js +323 -0
- package/skills/deep-research/SKILL.md +1 -13
- package/skills/word-documents/SKILL.md +0 -13
- package/src/agent-runner.js +278 -3517
- package/src/cli.js +1 -8
- package/src/command-policy.js +24 -1067
- package/src/config.js +0 -2
- package/src/deep-research.js +17 -153
- package/src/docker-sandbox.js +1 -78
- package/src/execution-policy.js +0 -8
- package/src/execution-runtime-bundle.js +639 -0
- package/src/execution-worker-api.js +245 -0
- package/src/execution-worker-client.js +960 -0
- package/src/execution-worker-jobs.js +399 -0
- package/src/execution-worker-server.js +239 -0
- package/src/execution-worker-systemd-boundary.js +654 -0
- package/src/execution-worker.js +1437 -0
- package/src/guardrails.js +1 -52
- package/src/integration-analysis-cli.js +216 -0
- package/src/integration-analysis-config.js +566 -0
- package/src/integration-analysis-coordinator.js +406 -0
- package/src/integration-analysis-planner.js +1957 -0
- package/src/integration-analysis-server.js +534 -0
- package/src/integration-analysis-session-service.js +4671 -0
- package/src/integration-analysis-state-persistence.js +17 -0
- package/src/integration-api.js +762 -19
- package/src/integration-artifacts.js +242 -7
- package/src/integration-auth.js +1 -1
- package/src/integration-cli.js +3 -15
- package/src/integration-core-event-projector.js +10 -0
- package/src/integration-document-artifacts.js +394 -0
- package/src/integration-document-blob-store.js +226 -0
- package/src/integration-document-worker-cli.js +168 -0
- package/src/integration-document-worker-client.js +1469 -0
- package/src/integration-document-worker-config.js +284 -0
- package/src/integration-document-worker-contract.js +663 -0
- package/src/integration-document-worker-requirements.js +119 -0
- package/src/integration-document-worker-runtime.js +199 -0
- package/src/integration-document-worker-server.js +493 -0
- package/src/integration-document-worker-service.js +346 -0
- package/src/integration-document-worker-store.js +1389 -0
- package/src/integration-event-ledger-store.js +2 -2
- package/src/integration-events.js +12 -2
- package/src/integration-explicit-python.js +225 -0
- package/src/integration-expression-plot.js +361 -0
- package/src/integration-grounded-search.js +677 -0
- package/src/integration-idempotency-store.js +87 -6
- package/src/integration-policy.js +71 -5
- package/src/integration-tex-compiler.js +654 -0
- package/src/local-failure-recovery.js +18 -71
- package/src/model-client.js +10 -218
- package/src/permission-advice.js +1 -232
- package/src/progressive-tool-selection.js +14 -234
- package/src/redaction.js +2 -23
- package/src/research-routing.js +9 -100
- package/src/scs-controller.js +1 -2
- package/src/scs-evidence.js +20 -158
- package/src/step-budget-controller.js +2 -20
- package/src/task-profiles.js +1 -1
- package/src/tool-contract.js +5 -84
- package/scripts/smoke-document-artifact-quality.js +0 -144
- package/scripts/smoke-integration-production-runtime-bundle.js +0 -435
- package/scripts/smoke-integration-retained-idempotency-store.js +0 -938
- package/scripts/smoke-planning-timeout-recovery.js +0 -572
- package/scripts/smoke-workspace-secret-false-positive.js +0 -91
- package/src/document-artifact-quality.js +0 -606
- package/src/integration-production-runtime-bundle.js +0 -996
- package/src/integration-retained-idempotency-store.js +0 -2029
- package/src/provider-handoff.js +0 -126
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { verifyIntegrationDocumentWorkerNodeRuntime } from "../src/integration-document-worker-runtime.js";
|
|
3
|
+
|
|
4
|
+
if (process.argv.length !== 2) {
|
|
5
|
+
process.stderr.write("aginti-document-worker-runtime-check: RUNTIME_IDENTITY_INVALID\n");
|
|
6
|
+
process.exitCode = 1;
|
|
7
|
+
} else {
|
|
8
|
+
verifyIntegrationDocumentWorkerNodeRuntime().catch(() => {
|
|
9
|
+
process.stderr.write("aginti-document-worker-runtime-check: RUNTIME_IDENTITY_INVALID\n");
|
|
10
|
+
process.exitCode = 1;
|
|
11
|
+
});
|
|
12
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
main,
|
|
4
|
+
safeIntegrationDocumentWorkerCliError,
|
|
5
|
+
} from "../src/integration-document-worker-cli.js";
|
|
6
|
+
|
|
7
|
+
main().catch((error) => {
|
|
8
|
+
process.stderr.write(`aginti-document-worker: ${safeIntegrationDocumentWorkerCliError(error)}\n`);
|
|
9
|
+
process.exitCode = 1;
|
|
10
|
+
});
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
createProductionExecutionWorkerServer,
|
|
4
|
+
installExecutionWorkerShutdownHandlers,
|
|
5
|
+
loadExecutionWorkerServerConfig,
|
|
6
|
+
} from "../src/execution-worker-server.js";
|
|
7
|
+
|
|
8
|
+
try {
|
|
9
|
+
const config = await loadExecutionWorkerServerConfig();
|
|
10
|
+
const runtime = await createProductionExecutionWorkerServer({ config });
|
|
11
|
+
installExecutionWorkerShutdownHandlers(runtime.server);
|
|
12
|
+
console.log(JSON.stringify({
|
|
13
|
+
ok: true,
|
|
14
|
+
service: "aginti-execution-worker",
|
|
15
|
+
workerId: config.workerId,
|
|
16
|
+
runtimeBundleRootDigest: config.runtimeBundleRootDigest,
|
|
17
|
+
listener: runtime.address,
|
|
18
|
+
}));
|
|
19
|
+
} catch (error) {
|
|
20
|
+
console.error(JSON.stringify({
|
|
21
|
+
ok: false,
|
|
22
|
+
service: "aginti-execution-worker",
|
|
23
|
+
code: typeof error?.code === "string" ? error.code : "EXECUTION_WORKER_START_FAILED",
|
|
24
|
+
}));
|
|
25
|
+
process.exitCode = 1;
|
|
26
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { main, safeIntegrationAnalysisCliError } from "../src/integration-analysis-cli.js";
|
|
3
|
+
|
|
4
|
+
main().catch((error) => {
|
|
5
|
+
process.stderr.write(`aginti-integration-analysis: ${safeIntegrationAnalysisCliError(error)}\n`);
|
|
6
|
+
process.exitCode = 1;
|
|
7
|
+
});
|
|
@@ -10,15 +10,6 @@ Simple questions should stay on the fast path. A deep-research run spends more
|
|
|
10
10
|
queries and model calls only when breadth, verification, and traceability add
|
|
11
11
|
real value.
|
|
12
12
|
|
|
13
|
-
For a request that combines local workspace evidence with web research, the
|
|
14
|
-
outer agent first receives normal inspection tools. After it has read two
|
|
15
|
-
relevant files, or read one file plus inspected/searched the project, the next
|
|
16
|
-
research turn is constrained to `deep_research` and `finish`. This keeps local
|
|
17
|
-
notes authoritative without letting an agent silently replace a requested
|
|
18
|
-
multi-source review with ad hoc browsing. Tool history is scoped to the newest
|
|
19
|
-
genuine user request, so a completed research call from an older task does not
|
|
20
|
-
suppress a later correction or refresh.
|
|
21
|
-
|
|
22
13
|
## Architecture
|
|
23
14
|
|
|
24
15
|
The implementation follows the strongest production patterns without making
|
|
@@ -44,11 +35,6 @@ every query an unbounded agent swarm:
|
|
|
44
35
|
paper set erase the requested source class. Search snippets can guide
|
|
45
36
|
discovery, but they cannot satisfy verified first-party coverage or enter
|
|
46
37
|
synthesis as cited evidence.
|
|
47
|
-
Phrases such as “official Temporal docs” retain this requirement even when a
|
|
48
|
-
product name occurs between `official` and `docs`. Product-owned root pages
|
|
49
|
-
and vendor blogs are classified using the named discovery route; unrelated
|
|
50
|
-
third-party pages are not promoted merely because their URL repeats one
|
|
51
|
-
query word.
|
|
52
38
|
Canonical duplicates found by multiple providers are promoted and retain
|
|
53
39
|
per-provider rank evidence. Multi-domain corpora receive separate bounded `site:`
|
|
54
40
|
queries matched to entity-specific subquestions instead of one fragile OR
|
|
@@ -113,10 +99,6 @@ every query an unbounded agent swarm:
|
|
|
113
99
|
rather than arbitrary page text. Every substantive paragraph and finding
|
|
114
100
|
cites exact evidence IDs instead of merely naming a source. A failed main
|
|
115
101
|
synthesis gets one same-provider fast-model fallback.
|
|
116
|
-
A request for practical recommendations becomes a completion obligation:
|
|
117
|
-
every recommendation must cite verified evidence, and the run fails closed
|
|
118
|
-
rather than delivering an unsupported advice section. The renderer uses the
|
|
119
|
-
compact research objective instead of dumping the raw task prompt.
|
|
120
102
|
9. **Audit**: deterministic code removes unknown or unverified evidence IDs,
|
|
121
103
|
derives visible source citations from accepted evidence records, removes
|
|
122
104
|
unsupported synthesis statements, then reports claim, quotation, citation,
|
|
@@ -128,13 +110,6 @@ every query an unbounded agent swarm:
|
|
|
128
110
|
guarded workspace-relative `outputPath` when the caller requests a durable
|
|
129
111
|
filename, then sent to the canvas.
|
|
130
112
|
|
|
131
|
-
The reader-facing report always includes an explicit limitations section and
|
|
132
|
-
separates quote-verified sources from inspected-but-uncited pages. When the
|
|
133
|
-
original request asks for reproducibility or exact quotations, deterministic
|
|
134
|
-
rendering adds a verification procedure, retrieval timestamps and SHA-256
|
|
135
|
-
digests, and a verified-evidence appendix. These sections come from the
|
|
136
|
-
retrieval/evidence ledger, not model memory.
|
|
137
|
-
|
|
138
113
|
This combines the orchestrator/worker and separate citation-pass lessons
|
|
139
114
|
described by [Anthropic's production research
|
|
140
115
|
system](https://www.anthropic.com/engineering/multi-agent-research-system)
|
|
@@ -161,8 +136,6 @@ the authoritative original user goal. A planner may shorten the research
|
|
|
161
136
|
question, but cannot silently drop requirements such as “compare at least three
|
|
162
137
|
independent primary sources,” “read a paper/PDF when available,” or “include
|
|
163
138
|
negative evidence.” These requirements are fingerprinted and checkpointed.
|
|
164
|
-
The same contract covers practical recommendations, reproducible verification
|
|
165
|
-
methods, and exact-quote evidence appendices.
|
|
166
139
|
|
|
167
140
|
Planning and evidence extraction deliberately use the configured routing model
|
|
168
141
|
when it belongs to a hosted active provider. Synthesis uses the configured main
|
|
@@ -214,10 +187,7 @@ To resume a partial or completed same-query run, pass the returned
|
|
|
214
187
|
`refresh=true` is explicit. A transient run that retrieved zero allowed sources
|
|
215
188
|
is marked failed, preserves its attempts, and retries retrieval on resume
|
|
216
189
|
instead of caching an empty report as success. Checkpoint schema changes
|
|
217
|
-
invalidate old cached runs automatically.
|
|
218
|
-
the research schema version; the outer session reuses a completed result only
|
|
219
|
-
when that version matches the installed engine. Versionless or older retained
|
|
220
|
-
results are refreshed instead of being presented as current evidence.
|
|
190
|
+
invalidate old cached runs automatically.
|
|
221
191
|
|
|
222
192
|
`outputPath` is optional and must name a Markdown file inside the active
|
|
223
193
|
workspace. Repository internals such as `.git`, dependency trees such as
|
package/docs/model-selection.md
CHANGED
|
@@ -26,8 +26,6 @@ The local tier policy uses the workstation's installed aliases without treating
|
|
|
26
26
|
|
|
27
27
|
Installed aliases are not loaded during routing. A genuine coding/implementation request starts on Deep, checks the authenticated model inventory, and selects the exact `AGINTI_LOCALLLM_CODE_MODEL` value only when present. Missing or unverified capability stays on Deep; the decision and effective model are recorded so fallback sessions can re-evaluate and selected sessions resume on the same model. Explanation-only code questions and non-code writing/research/documentation/design keep their existing route. Automatic Max is off by default; set `AGINTI_LOCALLLM_ALLOW_AUTO_MAX=true` to opt in. An opted-in high-complexity non-code run starts on Deep, confirms the Max alias through authenticated `/v1/models`, and only then samples current resources. Unknown or pressured resource state stays on Deep. Explicit Max also cannot bypass the live gate: immediately before client creation, each new or resumed run rechecks at least 24 GiB available RAM, swap use at or below 75%, and 40 GiB aggregate free NVIDIA memory. A blocked explicit gate creates no model client and performs no inference.
|
|
28
28
|
|
|
29
|
-
Smart hosted routes fail over only toward the local trust boundary. If a hosted provider returns an authentication, quota, rate-limit, model-availability, capacity, or network failure, AgInTiFlow records `provider.handoff_requested`, patches the same durable session to `localllm-deep`, verifies LocalLLM readiness, records `provider.handoff_activated`, and continues without replaying the user request or prior side effects. Manual routing remains exact and never changes provider automatically. Retained integration profiles also keep their pinned provider identity. Set `AGINTI_PROVIDER_HANDOFF=false` to disable the smart hosted-to-local handoff or `AGINTI_PROVIDER_HANDOFF_MODEL` to select another verified local fallback model.
|
|
30
|
-
|
|
31
29
|
Long writing tasks use an additional tool boundary: `writing_specialist`. The main model still plans the run, manages files, formats Markdown/LaTeX/Final Draft output, compiles/checks artifacts, and finishes. The specialist gets only the writing brief, canon, style guide, prior draft, target, audience, constraints, and format intent, then returns prose plus a formatter handoff. It follows the active LocalLLM provider by default even when hosted keys exist. Cross-provider writing requires both an explicit target (`AGINTI_WRITING_PROVIDER` or a per-run provider override) and `AGINTI_ALLOW_HOSTED_WRITING_SPECIALIST=true` (or the equivalent per-run permission flag); language detection and ambient credentials never grant that permission.
|
|
32
30
|
|
|
33
31
|
## CLI Commands
|
|
@@ -73,8 +73,6 @@ Current contract:
|
|
|
73
73
|
- `danger` is trusted host/full-access mode: host shell, destructive actions, host installs, password typing, and outside-workspace file paths are enabled. Use it only for tasks you trust; obvious secret/publish exfiltration guards remain hard stops.
|
|
74
74
|
- Workspace file tools may read and write inside the configured project folder when file tools are enabled.
|
|
75
75
|
- Narrow workspace-local shell actions such as safe probes, Gradle/TeX builds, and `chmod +x` on a project script may run when the command policy can classify them precisely.
|
|
76
|
-
- Finite literal read-only audits may bind a small literal path, inspect/hash it, count matches through a bounded read-only pipeline, summarize stdin with `sort | uniq -c`, and display numeric results with `echo` or `printf` without asking for destructive permission. Shell line continuations are accepted for finite literal item lists. Every producer, consumer, and surrounding command must still classify as bounded read-only work; network access, redirects, output-file operands, secret/dynamic expansion, shell-state `printf -v`, mutation, dynamic item lists, and computed values used as executable arguments remain blocked.
|
|
77
|
-
- Completion checks distinguish a resolved historical state such as "previously paused" from work that is currently pending or incomplete. A resolved past blocker therefore does not force another verification loop, while any explicit current unfinished state still does.
|
|
78
76
|
- Android/JVM toolchain commands may include safe local env assignments such as `ANDROID_HOME`, `ANDROID_SDK_ROOT`, `JAVA_HOME`, or `GRADLE_USER_HOME`, plus small workspace-local status-log redirects. Secret-like env vars and redirects outside the workspace remain blocked.
|
|
79
77
|
- Workspace writes outside that folder, secret paths, `.git` internals, and dependency folders such as `node_modules` are blocked.
|
|
80
78
|
- `git clone`, `git fetch`, `git pull --ff-only`, `git push`, `curl`, and `wget` are classified as network operations.
|
|
@@ -285,126 +285,3 @@ external semantic and repository-state contract passed at target commit
|
|
|
285
285
|
`f19ff4b`. No AgInTiFlow source change or task-specific prompt branch was
|
|
286
286
|
needed; the run validates the generic inbox, context, evidence, and completion
|
|
287
287
|
contracts in the published package.
|
|
288
|
-
|
|
289
|
-
### LabCanvas least-privilege worker integration
|
|
290
|
-
|
|
291
|
-
`labcanvas-worker-permission-018` validated the installed AgInTiFlow `0.20.217`
|
|
292
|
-
through LabCanvas after a real WeCom research task paused at
|
|
293
|
-
`permission_required`. The defect was in the integration boundary: LabCanvas
|
|
294
|
-
unconditionally selected AgInTi's blocked package-install tier, which also
|
|
295
|
-
blocked ordinary workspace shell execution. LabCanvas now keeps response-only
|
|
296
|
-
roles blocked while granting genuine worker roles reversible package setup
|
|
297
|
-
inside the Docker workspace. Host access, credentials, payment, publication,
|
|
298
|
-
destructive operations, and other irreversible actions remain separately
|
|
299
|
-
guarded.
|
|
300
|
-
|
|
301
|
-
A direct DeepSeek-backed worker smoke created and validated a bounded workspace
|
|
302
|
-
artifact without a permission prompt. Focused backend regressions, all WeChat
|
|
303
|
-
self-checks, the complete 1,442-test LabCanvas suite, and GitHub Actions passed.
|
|
304
|
-
The originally blocked exact-chat task was then resumed without duplicate model
|
|
305
|
-
work, produced a visually inspected nine-page XeLaTeX research report, and
|
|
306
|
-
delivered one concise message plus the PDF through the verified WeCom transport.
|
|
307
|
-
The follow-up message was preserved in the same chat session. The reusable fix
|
|
308
|
-
is AgenticApp commit `e705bb0`; no AgInTiFlow release change was required.
|
|
309
|
-
|
|
310
|
-
### Durable background-job recovery after foreground interruption
|
|
311
|
-
|
|
312
|
-
`long-job-recovery-019` exercised installed AgInTiFlow `0.20.217` with a normal
|
|
313
|
-
laboratory-export request whose terminal could disconnect. The DeepSeek-backed
|
|
314
|
-
agent inspected the checked-in resumable scripts, rejected duplicate execution,
|
|
315
|
-
and selected the generic `start_long_job` routine. The campaign interrupted only
|
|
316
|
-
the foreground AgInTi pane after durable admission; the independent job tmux
|
|
317
|
-
continued, completed eight delayed batches, ran deferred verification, and
|
|
318
|
-
cleaned up its own tmux session.
|
|
319
|
-
|
|
320
|
-
The same AgInTi session then resumed from retained state. It recovered the exact
|
|
321
|
-
job ID through `long_job_status`, independently reran the project verifier,
|
|
322
|
-
confirmed the artifact and checksum, and finished without calling
|
|
323
|
-
`start_long_job` again. Proactive context compaction reduced the resumed history
|
|
324
|
-
from 190,805 to 30,680 characters while preserving the job identity and original
|
|
325
|
-
task boundary.
|
|
326
|
-
|
|
327
|
-
The independent acceptance contract verified one process invocation, one durable
|
|
328
|
-
job directory, attempt `1`, command and verifier exit `0`, the required durable
|
|
329
|
-
event sequence, a project handoff with exact status and verification commands,
|
|
330
|
-
and no lingering job tmux session. No source patch or npm release was needed;
|
|
331
|
-
this run validates the published package's general long-job, resume, context,
|
|
332
|
-
deduplication, and cleanup contracts without task-specific routing.
|
|
333
|
-
|
|
334
|
-
### Host-managed response roles and permission integrity
|
|
335
|
-
|
|
336
|
-
`permission-resilient-synthesis-030` traced a real LabCanvas career-report
|
|
337
|
-
failure to the integration boundary rather than weakening AgInTiFlow's
|
|
338
|
-
permission guard. LabCanvas invoked the host-managed report under the role
|
|
339
|
-
`career_research`, while its response-only classifier recognized only the older
|
|
340
|
-
`career_daily` alias. The model was consequently offered file tools in a safe,
|
|
341
|
-
read-only run; when it tried to save its already synthesized report,
|
|
342
|
-
AgInTiFlow correctly persisted a `permission_required` pause.
|
|
343
|
-
|
|
344
|
-
LabCanvas now classifies the full `career-research-*` and
|
|
345
|
-
`daily-organizer-*` role families as host-managed response turns. Those turns
|
|
346
|
-
use AgInTi's `chatops` profile with shell, file, and auxiliary tools disabled;
|
|
347
|
-
the host owns persistence, compilation, quality validation, and delivery.
|
|
348
|
-
General worker roles retain their existing writable Docker contract, and safe
|
|
349
|
-
mode still blocks genuine unapproved writes.
|
|
350
|
-
|
|
351
|
-
A fresh installed `0.20.248` DeepSeek run completed the imperfect synthesis
|
|
352
|
-
prompt in one model turn. Independent event inspection found zero tool calls,
|
|
353
|
-
zero permission events, one normal `session.finished`, a complete 1,893-byte
|
|
354
|
-
answer, and no task artifact mutation. This was an AgenticApp integration fix;
|
|
355
|
-
no AgInTiFlow runtime or npm release change was required.
|
|
356
|
-
|
|
357
|
-
### Reader-facing report quality and local editorial routing
|
|
358
|
-
|
|
359
|
-
`research-pdf-quality-034` exercised a normal scheduled-research packet through
|
|
360
|
-
the AgInTi-backed LabCanvas worker. DeepSeek revised an existing local report
|
|
361
|
-
into a 17,557-byte Chinese scientific review with nine traceable sources,
|
|
362
|
-
source-level methods/results/limitations, cross-source synthesis and tensions,
|
|
363
|
-
explicit evidence boundaries, actionable experiments, and references. The
|
|
364
|
-
first host compile exposed a nearly empty final page, and the prior agent repair
|
|
365
|
-
claimed success without changing the source.
|
|
366
|
-
|
|
367
|
-
LabCanvas now treats the PDF as a different deliverable from the concise chat
|
|
368
|
-
brief. It audits every configured content dimension, keeps orchestration
|
|
369
|
-
provenance out of the reader document, extracts text per page, renders private
|
|
370
|
-
page previews, rejects orphan pages, retries one conservative compact layout,
|
|
371
|
-
rebuilds stale sibling PDFs, and can deterministically adopt a corrected
|
|
372
|
-
host-built PDF during stored-result repair. The accepted four-page PDF has
|
|
373
|
-
embedded CJK fonts, page body counts `1584, 1988, 1416, 2058`, and no visual or
|
|
374
|
-
layout issues. Stored replay covered every task item with no model rerun or
|
|
375
|
-
external write.
|
|
376
|
-
|
|
377
|
-
The scenario also exposed two general AgInTi routing false positives. Explicit
|
|
378
|
-
local report paths and existing-document revision language now count as local
|
|
379
|
-
workspace intent, so surrounding research policy does not force a new deep
|
|
380
|
-
research route. The phrase `page-safe` no longer creates a browser-evidence
|
|
381
|
-
requirement. Focused routing/evidence smokes and the full npm suite pass.
|
|
382
|
-
|
|
383
|
-
### Fresh current-turn command evidence on retained sessions
|
|
384
|
-
|
|
385
|
-
`security-labshare-035` exercised a long-lived LocalLLM security-repair
|
|
386
|
-
session after the target repository was already fixed, committed, and clean.
|
|
387
|
-
The follow-up prompt deliberately asked the agent not to edit or recommit. It
|
|
388
|
-
required only the exact hidden verifier and `git status --short`, while allowing
|
|
389
|
-
all other passing implementation and unit-test evidence to remain reusable.
|
|
390
|
-
|
|
391
|
-
Installed AgInTiFlow `0.20.250` incorrectly finished after `inspect_project`.
|
|
392
|
-
It reused the old verifier/status evidence and never executed either command in
|
|
393
|
-
the current turn. The defect was not model quality: the runtime had failed to
|
|
394
|
-
turn explicit commands in a concrete same-task interruption into a fresh,
|
|
395
|
-
revision-bound evidence obligation.
|
|
396
|
-
|
|
397
|
-
The runtime now records explicit current-turn commands in the active execution
|
|
398
|
-
contract and creates a fresh command batch for only that subset. Unrelated
|
|
399
|
-
passing evidence from the unchanged mutation revision remains valid, while old
|
|
400
|
-
runs of the newly requested commands cannot pre-complete the batch. Inline
|
|
401
|
-
command extraction also recognizes natural `verify`, `validate`, `check`,
|
|
402
|
-
`confirm`, and rerun wording in English and Chinese.
|
|
403
|
-
|
|
404
|
-
The same real session was replayed against the patched source at goal revision
|
|
405
|
-
`34`. Its event ledger records both commands under
|
|
406
|
-
`required-command-batch-3`: the exact external security contract returned
|
|
407
|
-
`security_labshare_contract: PASS`, and `git status --short` returned empty.
|
|
408
|
-
The target stayed at commit `2b35928` with no mutation. Focused planning,
|
|
409
|
-
truthful-completion, and dynamic-budget regressions pass, as does the complete
|
|
410
|
-
AgInTiFlow npm suite. The fix is released in AgInTiFlow `0.20.251`.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Workstation document worker example
|
|
2
|
+
|
|
3
|
+
This example is deployment input, not an installed service. It deliberately
|
|
4
|
+
starts in the read/delete rollback floor with `creation.enabled=false`.
|
|
5
|
+
Readiness, staged-receipt commit, content reads, and two-phase delete remain
|
|
6
|
+
available; only new compile requests return `WORKER_CREATION_DISABLED` (503).
|
|
7
|
+
|
|
8
|
+
The fixed application listener is `127.0.0.1:18102`. LazyEdge is the only
|
|
9
|
+
intended caller and injects the distinct upstream application bearer. Store the
|
|
10
|
+
same bare upstream capability in a protected LazyEdge worker binding file and
|
|
11
|
+
in the root-owned, mode `0400`, non-symlink systemd credential source:
|
|
12
|
+
|
|
13
|
+
`/etc/agintiflow/credentials/document-worker-upstream-token`
|
|
14
|
+
|
|
15
|
+
The service receives it only through systemd at:
|
|
16
|
+
|
|
17
|
+
`/run/credentials/aginti-document-worker.service/document-worker-upstream-token`
|
|
18
|
+
|
|
19
|
+
Do not put that value in the JSON config, an environment variable, an argument,
|
|
20
|
+
logs, documentation, or Git. The dedicated `aginti-document-worker` user/group,
|
|
21
|
+
selected release path, config, and credential must be created by a reviewed
|
|
22
|
+
deployment step; this example does not create them. Before installing the unit,
|
|
23
|
+
deployment must replace `RELEASE_SHA256` with the exact lowercase SHA-256 release
|
|
24
|
+
identifier. No mutable `current` entry is permitted beside `releases` and
|
|
25
|
+
`runtimes` under `/opt/agintiflow-document-worker`.
|
|
26
|
+
The root-only installer creates the mode `0755` `releases` child and performs
|
|
27
|
+
each no-replace release rename inside that child; the application root itself
|
|
28
|
+
can remain frozen at mode `0555` throughout staging.
|
|
29
|
+
|
|
30
|
+
The unit never executes the workstation's `/usr/bin/node` or a user-owned Node
|
|
31
|
+
path. A reviewed root bootstrap first verifies the versioned Node 22.21.0
|
|
32
|
+
source, then installs the exact binary at the immutable `/opt` path recorded in
|
|
33
|
+
`runtime-manifest.json`. The binary and its four application runtime
|
|
34
|
+
directories are all `root:root` mode `0555`; `/` and `/opt` remain `root:root`
|
|
35
|
+
mode `0755`. `ProtectHome=tmpfs` therefore needs no home-directory exception.
|
|
36
|
+
Before enable, deployment must verify the version, SHA-256, ownership, mode,
|
|
37
|
+
size, ancestry, and exact runtime inventories, then run both the CLI check and
|
|
38
|
+
real bwrap/latexmk/qpdf activation canary under the installed unit.
|
|
39
|
+
Both `ExecStartPre` checks and `ExecStart` use that same immutable Node. The
|
|
40
|
+
worker repeats the no-follow identity, hash, stable-ancestry, and inventory
|
|
41
|
+
checks after exec and fails unless it is running from that exact path as the
|
|
42
|
+
non-root service user/group. Thus a later automatic restart does not trust
|
|
43
|
+
deployment-time evidence alone.
|
|
44
|
+
The second `ExecStartPre` is the exact in-unit `check`: it runs one bounded,
|
|
45
|
+
network-isolated LaTeX/qpdf canary even while `creation.enabled=false`. Its
|
|
46
|
+
success is deployment evidence only; live readiness still advertises
|
|
47
|
+
`compiler:null`, and the compile endpoint remains disabled. The probe never
|
|
48
|
+
stages or commits worker-store objects, removes its private temporary tree, and
|
|
49
|
+
zeroes its process-local artifact buffers before returning.
|
|
50
|
+
The exact installed candidate unit must complete `aginti-document-worker check`
|
|
51
|
+
successfully before LazyEdge route activation, AgInTi broker activation, or Web
|
|
52
|
+
exposure is allowed; static unit verification is not a substitute for that
|
|
53
|
+
namespace and compiler activation proof.
|
|
54
|
+
|
|
55
|
+
LazyEdge permits two concurrent requests and the worker admits at most two
|
|
56
|
+
compiler processes; at most four additional compiles remain in a bounded
|
|
57
|
+
in-process queue and excess admission fails retryably.
|
|
58
|
+
The private ledger also enforces fixed group/directory bounds, per-source and
|
|
59
|
+
per-PDF limits, and an 8 GiB aggregate live-object ceiling; quota exhaustion
|
|
60
|
+
does not disable existing reads or two-phase deletion.
|
|
61
|
+
Each compiler process has a 30-second wall limit. The 120-second private-route
|
|
62
|
+
timeout is intentionally longer so queueing, forced cleanup, and a structured
|
|
63
|
+
failure response retain transport headroom.
|
|
64
|
+
|
|
65
|
+
The TeX compiler uses bubblewrap namespaces. Therefore the unit intentionally
|
|
66
|
+
does not use `RestrictNamespaces=true`; it denies only time namespaces. Every
|
|
67
|
+
candidate unit must run the real bwrap/latexmk/qpdf activation canary under the
|
|
68
|
+
installed unit before creation is enabled. A hash-only executable check is not
|
|
69
|
+
an activation proof.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
[Unit]
|
|
2
|
+
Description=AgInTi workstation document artifact worker
|
|
3
|
+
Documentation=https://flow.lazying.art
|
|
4
|
+
After=local-fs.target
|
|
5
|
+
|
|
6
|
+
[Service]
|
|
7
|
+
Type=simple
|
|
8
|
+
User=aginti-document-worker
|
|
9
|
+
Group=aginti-document-worker
|
|
10
|
+
UMask=0077
|
|
11
|
+
Environment=PATH=/usr/sbin:/usr/bin:/sbin:/bin
|
|
12
|
+
WorkingDirectory=/var/lib/aginti-document-worker
|
|
13
|
+
ExecStartPre=/opt/agintiflow-document-worker/runtimes/node-v22.21.0-29e9c28204d89d85/bin/node /opt/agintiflow-document-worker/releases/RELEASE_SHA256/bin/aginti-document-worker-runtime-check.js
|
|
14
|
+
ExecStartPre=/opt/agintiflow-document-worker/runtimes/node-v22.21.0-29e9c28204d89d85/bin/node /opt/agintiflow-document-worker/releases/RELEASE_SHA256/bin/aginti-document-worker.js check --config /etc/agintiflow/document-worker.json
|
|
15
|
+
ExecStart=/opt/agintiflow-document-worker/runtimes/node-v22.21.0-29e9c28204d89d85/bin/node /opt/agintiflow-document-worker/releases/RELEASE_SHA256/bin/aginti-document-worker.js serve --config /etc/agintiflow/document-worker.json
|
|
16
|
+
LoadCredential=document-worker-upstream-token:/etc/agintiflow/credentials/document-worker-upstream-token
|
|
17
|
+
StateDirectory=aginti-document-worker
|
|
18
|
+
StateDirectoryMode=0700
|
|
19
|
+
RuntimeDirectory=aginti-document-worker
|
|
20
|
+
RuntimeDirectoryMode=0700
|
|
21
|
+
Restart=on-failure
|
|
22
|
+
RestartSec=2s
|
|
23
|
+
TimeoutStartSec=60s
|
|
24
|
+
TimeoutStopSec=15s
|
|
25
|
+
KillMode=mixed
|
|
26
|
+
KillSignal=SIGTERM
|
|
27
|
+
NoNewPrivileges=yes
|
|
28
|
+
PrivateTmp=yes
|
|
29
|
+
PrivateDevices=yes
|
|
30
|
+
PrivateIPC=yes
|
|
31
|
+
ProtectSystem=strict
|
|
32
|
+
ProtectHome=tmpfs
|
|
33
|
+
ProtectKernelTunables=yes
|
|
34
|
+
ProtectKernelModules=yes
|
|
35
|
+
ProtectKernelLogs=yes
|
|
36
|
+
ProtectClock=yes
|
|
37
|
+
ProtectControlGroups=yes
|
|
38
|
+
ProtectHostname=yes
|
|
39
|
+
ProtectProc=invisible
|
|
40
|
+
ProcSubset=pid
|
|
41
|
+
RestrictAddressFamilies=AF_UNIX AF_INET AF_NETLINK
|
|
42
|
+
RestrictNamespaces=~time
|
|
43
|
+
RestrictRealtime=yes
|
|
44
|
+
RestrictSUIDSGID=yes
|
|
45
|
+
LockPersonality=yes
|
|
46
|
+
SystemCallArchitectures=native
|
|
47
|
+
CapabilityBoundingSet=
|
|
48
|
+
AmbientCapabilities=
|
|
49
|
+
IPAddressDeny=any
|
|
50
|
+
IPAddressAllow=localhost
|
|
51
|
+
SocketBindDeny=any
|
|
52
|
+
SocketBindAllow=tcp:18102
|
|
53
|
+
ReadOnlyPaths=/etc/agintiflow/document-worker.json
|
|
54
|
+
InaccessiblePaths=/etc/agintiflow/credentials
|
|
55
|
+
InaccessiblePaths=/var/lib/lazyedge
|
|
56
|
+
InaccessiblePaths=/var/lib/agintiflow-integration
|
|
57
|
+
MemoryMax=1610612736
|
|
58
|
+
MemorySwapMax=0
|
|
59
|
+
TasksMax=64
|
|
60
|
+
CPUQuota=200%
|
|
61
|
+
CPUQuotaPeriodSec=100ms
|
|
62
|
+
LimitNOFILE=512
|
|
63
|
+
LimitCORE=0
|
|
64
|
+
OOMPolicy=kill
|
|
65
|
+
|
|
66
|
+
[Install]
|
|
67
|
+
WantedBy=multi-user.target
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "aginti-document-worker-runtime-manifest-v1",
|
|
3
|
+
"node": {
|
|
4
|
+
"path": "/opt/agintiflow-document-worker/runtimes/node-v22.21.0-29e9c28204d89d85/bin/node",
|
|
5
|
+
"version": "v22.21.0",
|
|
6
|
+
"sha256": "29e9c28204d89d85cc426b518b4a7c6e32aafecd5e447d65301ffb2c1c15335a",
|
|
7
|
+
"owner": "root",
|
|
8
|
+
"group": "root",
|
|
9
|
+
"mode": "0555",
|
|
10
|
+
"size": 123351032,
|
|
11
|
+
"unitMount": "none"
|
|
12
|
+
},
|
|
13
|
+
"immutableAncestry": {
|
|
14
|
+
"owner": "root",
|
|
15
|
+
"group": "root",
|
|
16
|
+
"mode": "0555",
|
|
17
|
+
"applicationRootEntries": [
|
|
18
|
+
"releases",
|
|
19
|
+
"runtimes"
|
|
20
|
+
],
|
|
21
|
+
"paths": [
|
|
22
|
+
"/opt/agintiflow-document-worker",
|
|
23
|
+
"/opt/agintiflow-document-worker/runtimes",
|
|
24
|
+
"/opt/agintiflow-document-worker/runtimes/node-v22.21.0-29e9c28204d89d85",
|
|
25
|
+
"/opt/agintiflow-document-worker/runtimes/node-v22.21.0-29e9c28204d89d85/bin"
|
|
26
|
+
]
|
|
27
|
+
}
|
|
28
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lazyingart/agintiflow",
|
|
3
|
-
"version": "0.20.
|
|
3
|
+
"version": "0.20.257-integration.4",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "AgInTiFlow is a project-aware agent workspace for hybrid wet-dry R&D, hardware-aware intelligence, software automation, and industrial workflows.",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -31,6 +31,12 @@
|
|
|
31
31
|
"access": "public"
|
|
32
32
|
},
|
|
33
33
|
"exports": {
|
|
34
|
+
"./document-worker": "./src/integration-document-worker-service.js",
|
|
35
|
+
"./document-worker/config": "./src/integration-document-worker-config.js",
|
|
36
|
+
"./document-worker/contract": "./src/integration-document-worker-contract.js",
|
|
37
|
+
"./document-worker/server": "./src/integration-document-worker-server.js",
|
|
38
|
+
"./document-worker/store": "./src/integration-document-worker-store.js",
|
|
39
|
+
"./document-worker/runtime": "./src/integration-document-worker-runtime.js",
|
|
34
40
|
"./public-research": "./src/public-research-wrapper.js",
|
|
35
41
|
"./public-research/server": "./src/public-research-server.js",
|
|
36
42
|
"./safe-chat": "./src/safe-chat-wrapper.js",
|
|
@@ -46,6 +52,7 @@
|
|
|
46
52
|
"bin/",
|
|
47
53
|
"docs/",
|
|
48
54
|
"docker/",
|
|
55
|
+
"examples/document-worker/",
|
|
49
56
|
"demos/agintiflow-cli-launch.jpg",
|
|
50
57
|
"demos/agintiflow-web-console-run-output.jpg",
|
|
51
58
|
"i18n/",
|
|
@@ -66,8 +73,6 @@
|
|
|
66
73
|
"scripts/supervision-ledger.js",
|
|
67
74
|
"scripts/smoke-supervision-ledger.js",
|
|
68
75
|
"scripts/smoke-integration-production-mount.js",
|
|
69
|
-
"scripts/smoke-integration-production-runtime-bundle.js",
|
|
70
|
-
"scripts/smoke-integration-retained-idempotency-store.js",
|
|
71
76
|
"scripts/smoke-integration-storage-authority.js",
|
|
72
77
|
"scripts/smoke-integration-retained-durable-common.js",
|
|
73
78
|
"scripts/smoke-integration-retained-file-lock.js",
|
|
@@ -81,6 +86,32 @@
|
|
|
81
86
|
"scripts/smoke-integration-retained-runtime-repository-phase-b.js",
|
|
82
87
|
"scripts/smoke-integration-runtime-repository-contract.js",
|
|
83
88
|
"scripts/smoke-integration-runtime-authority.js",
|
|
89
|
+
"scripts/smoke-integration-api.js",
|
|
90
|
+
"scripts/smoke-integration-sandbox-profile.js",
|
|
91
|
+
"scripts/smoke-execution-worker.js",
|
|
92
|
+
"scripts/smoke-execution-runtime-bundle.js",
|
|
93
|
+
"scripts/smoke-execution-worker-server.js",
|
|
94
|
+
"scripts/smoke-execution-worker-systemd-boundary.js",
|
|
95
|
+
"scripts/smoke-integration-analysis-coordinator.js",
|
|
96
|
+
"scripts/smoke-integration-document-artifacts.js",
|
|
97
|
+
"scripts/smoke-integration-document-content.js",
|
|
98
|
+
"scripts/smoke-integration-document-revision.js",
|
|
99
|
+
"scripts/smoke-integration-document-session-broker.js",
|
|
100
|
+
"scripts/smoke-integration-document-worker-contract.js",
|
|
101
|
+
"scripts/smoke-integration-document-worker-store.js",
|
|
102
|
+
"scripts/smoke-integration-document-worker-service.js",
|
|
103
|
+
"scripts/smoke-integration-document-worker-server.js",
|
|
104
|
+
"scripts/github-hosted-release-environment.js",
|
|
105
|
+
"scripts/smoke-integration-document-worker-systemd-boundary.js",
|
|
106
|
+
"scripts/smoke-integration-document-worker-real-compile.js",
|
|
107
|
+
"scripts/smoke-integration-document-worker-cross-boundary.js",
|
|
108
|
+
"scripts/test-document-worker-fixture.js",
|
|
109
|
+
"scripts/fixtures/integration-document-worker-smoke-fixture.js",
|
|
110
|
+
"scripts/smoke-integration-grounded-search.js",
|
|
111
|
+
"scripts/smoke-integration-analysis-planner.js",
|
|
112
|
+
"scripts/smoke-integration-analysis-session-service.js",
|
|
113
|
+
"scripts/smoke-integration-analysis-api-server.js",
|
|
114
|
+
"scripts/live-production-planner-smoke.js",
|
|
84
115
|
"scripts/smoke-auxiliary-tools.js",
|
|
85
116
|
"scripts/smoke-agentlink.js",
|
|
86
117
|
"scripts/smoke-auth.js",
|
|
@@ -99,15 +130,12 @@
|
|
|
99
130
|
"scripts/smoke-localllm-auto-max.js",
|
|
100
131
|
"scripts/smoke-localllm-code-routing.js",
|
|
101
132
|
"scripts/smoke-local-failure-recovery.js",
|
|
102
|
-
"scripts/smoke-planning-timeout-recovery.js",
|
|
103
133
|
"scripts/smoke-local-resource-policy.js",
|
|
104
134
|
"scripts/smoke-localllm-model-tiers.js",
|
|
105
135
|
"scripts/smoke-localllm-provider.js",
|
|
106
136
|
"scripts/smoke-progressive-tool-selection.js",
|
|
107
137
|
"scripts/smoke-truthful-completion.js",
|
|
108
|
-
"scripts/smoke-document-artifact-quality.js",
|
|
109
138
|
"scripts/smoke-writing-specialist-routing.js",
|
|
110
|
-
"scripts/smoke-workspace-secret-false-positive.js",
|
|
111
139
|
"scripts/eval-provider-attribution.js",
|
|
112
140
|
"scripts/local-first-agent-eval.mjs",
|
|
113
141
|
"scripts/fixtures/local-first-agent-eval-fixtures.mjs",
|
|
@@ -143,7 +171,10 @@
|
|
|
143
171
|
"bin": {
|
|
144
172
|
"aginti": "bin/aginti-cli.js",
|
|
145
173
|
"aginti-cli": "bin/aginti-cli.js",
|
|
174
|
+
"aginti-execution-worker": "bin/aginti-execution-worker.js",
|
|
175
|
+
"aginti-document-worker": "bin/aginti-document-worker.js",
|
|
146
176
|
"aginti-integration": "bin/aginti-integration.js",
|
|
177
|
+
"aginti-integration-analysis": "bin/aginti-integration-analysis.js",
|
|
147
178
|
"aginti-public-research": "bin/aginti-public-research.js",
|
|
148
179
|
"aginti-safe-chat": "bin/aginti-safe-chat.js"
|
|
149
180
|
},
|
|
@@ -173,17 +204,13 @@
|
|
|
173
204
|
"smoke:localllm-auto-max": "node scripts/smoke-localllm-auto-max.js",
|
|
174
205
|
"smoke:localllm-code-routing": "node scripts/smoke-localllm-code-routing.js",
|
|
175
206
|
"smoke:local-failure-recovery": "node scripts/smoke-local-failure-recovery.js",
|
|
176
|
-
"smoke:planning-timeout-recovery": "node scripts/smoke-planning-timeout-recovery.js",
|
|
177
|
-
"smoke:provider-handoff": "node scripts/smoke-provider-handoff.js",
|
|
178
207
|
"smoke:local-resource-policy": "node scripts/smoke-local-resource-policy.js",
|
|
179
208
|
"smoke:context-budget-recovery": "node scripts/smoke-context-budget-recovery.js",
|
|
180
209
|
"smoke:localllm-model-tiers": "node scripts/smoke-localllm-model-tiers.js",
|
|
181
210
|
"smoke:localllm-provider": "node scripts/smoke-localllm-provider.js",
|
|
182
211
|
"smoke:progressive-tools": "node scripts/smoke-progressive-tool-selection.js",
|
|
183
212
|
"smoke:truthful-completion": "node scripts/smoke-truthful-completion.js",
|
|
184
|
-
"smoke:document-artifact-quality": "node scripts/smoke-document-artifact-quality.js",
|
|
185
213
|
"smoke:writing-specialist-routing": "node scripts/smoke-writing-specialist-routing.js",
|
|
186
|
-
"smoke:workspace-secret-false-positive": "node scripts/smoke-workspace-secret-false-positive.js",
|
|
187
214
|
"smoke:mcp": "node scripts/smoke-mcp.js",
|
|
188
215
|
"smoke:model-roles": "node scripts/smoke-model-roles.js",
|
|
189
216
|
"smoke:platform": "node scripts/smoke-platform.js",
|
|
@@ -210,8 +237,6 @@
|
|
|
210
237
|
"supervision:ledger": "node scripts/supervision-ledger.js",
|
|
211
238
|
"smoke:supervision-ledger": "node scripts/smoke-supervision-ledger.js",
|
|
212
239
|
"smoke:integration-production-mount": "node scripts/smoke-integration-production-mount.js",
|
|
213
|
-
"smoke:integration-production-runtime-bundle": "node scripts/smoke-integration-production-runtime-bundle.js",
|
|
214
|
-
"smoke:integration-retained-idempotency-store": "node scripts/smoke-integration-retained-idempotency-store.js",
|
|
215
240
|
"smoke:integration-storage-authority": "node scripts/smoke-integration-storage-authority.js",
|
|
216
241
|
"smoke:integration-retained-durable-common": "node scripts/smoke-integration-retained-durable-common.js",
|
|
217
242
|
"smoke:integration-retained-file-lock": "node scripts/smoke-integration-retained-file-lock.js",
|
|
@@ -225,11 +250,34 @@
|
|
|
225
250
|
"smoke:integration-retained-runtime-repository-phase-b": "node scripts/smoke-integration-retained-runtime-repository-phase-b.js",
|
|
226
251
|
"smoke:integration-runtime-repository-contract": "node scripts/smoke-integration-runtime-repository-contract.js",
|
|
227
252
|
"smoke:integration-runtime-authority": "node scripts/smoke-integration-runtime-authority.js",
|
|
253
|
+
"smoke:integration-api": "node scripts/smoke-integration-api.js",
|
|
254
|
+
"smoke:integration-sandbox-profile": "node scripts/smoke-integration-sandbox-profile.js",
|
|
255
|
+
"smoke:execution-worker": "node scripts/smoke-execution-worker.js",
|
|
256
|
+
"smoke:execution-runtime-bundle": "node scripts/smoke-execution-runtime-bundle.js",
|
|
257
|
+
"smoke:execution-worker-server": "node scripts/smoke-execution-worker-server.js",
|
|
258
|
+
"smoke:execution-worker-systemd-boundary": "node scripts/smoke-execution-worker-systemd-boundary.js",
|
|
259
|
+
"smoke:integration-analysis-coordinator": "node scripts/smoke-integration-analysis-coordinator.js",
|
|
260
|
+
"smoke:integration-document-artifacts": "node scripts/smoke-integration-document-artifacts.js",
|
|
261
|
+
"smoke:integration-document-content": "node scripts/smoke-integration-document-content.js",
|
|
262
|
+
"smoke:integration-document-revision": "node scripts/smoke-integration-document-revision.js",
|
|
263
|
+
"smoke:integration-document-session-broker": "node scripts/smoke-integration-document-session-broker.js",
|
|
264
|
+
"smoke:integration-document-worker-contract": "node scripts/smoke-integration-document-worker-contract.js",
|
|
265
|
+
"smoke:integration-document-worker-store": "node scripts/smoke-integration-document-worker-store.js",
|
|
266
|
+
"smoke:integration-document-worker-service": "node scripts/smoke-integration-document-worker-service.js",
|
|
267
|
+
"smoke:integration-document-worker-server": "node scripts/smoke-integration-document-worker-server.js",
|
|
268
|
+
"smoke:integration-document-worker-systemd-boundary": "node scripts/smoke-integration-document-worker-systemd-boundary.js",
|
|
269
|
+
"smoke:integration-document-worker-real-compile": "node scripts/smoke-integration-document-worker-real-compile.js",
|
|
270
|
+
"smoke:integration-document-worker-cross-boundary": "node scripts/smoke-integration-document-worker-cross-boundary.js .",
|
|
271
|
+
"test:document-worker": "npm run smoke:integration-document-worker-contract && npm run smoke:integration-document-worker-store && npm run smoke:integration-document-worker-service && npm run smoke:integration-document-worker-server && npm run smoke:integration-document-worker-systemd-boundary && npm run smoke:integration-document-worker-real-compile",
|
|
272
|
+
"smoke:integration-grounded-search": "node scripts/smoke-integration-grounded-search.js",
|
|
273
|
+
"smoke:integration-analysis-planner": "node scripts/smoke-integration-analysis-planner.js",
|
|
274
|
+
"smoke:integration-analysis-session-service": "node scripts/smoke-integration-analysis-session-service.js",
|
|
275
|
+
"smoke:integration-analysis-api-server": "node scripts/smoke-integration-analysis-api-server.js",
|
|
276
|
+
"smoke:integration-analysis-live": "node scripts/live-production-planner-smoke.js",
|
|
228
277
|
"storage:migrate": "node bin/aginti-cli.js storage migrate",
|
|
229
278
|
"publish:env": "node scripts/npm-publish-from-env.js publish --access public",
|
|
230
279
|
"publish:env:whoami": "node scripts/npm-publish-from-env.js whoami",
|
|
231
|
-
"
|
|
232
|
-
"test": "npm run check && npm run smoke:integration-production-mount && npm run smoke:integration-production-runtime-bundle && npm run smoke:integration-retained-idempotency-store && npm run smoke:integration-storage-authority && npm run smoke:integration-retained-durable-common && npm run smoke:integration-retained-file-lock && npm run smoke:integration-retained-event-ledger && npm run smoke:integration-retained-event-ledger-bundle && npm run smoke:integration-retained-repository-kernel && npm run smoke:integration-retained-session-state-store && npm run smoke:integration-retained-native-session-repository-state && npm run smoke:integration-retained-native-execution-evidence && npm run smoke:integration-retained-runtime-repository-surface && npm run smoke:integration-retained-runtime-repository-phase-b && npm run smoke:integration-runtime-repository-contract && npm run smoke:integration-runtime-authority && npm run smoke:localllm-provider && npm run smoke:localllm-model-tiers && npm run smoke:localllm-code-routing && npm run smoke:local-failure-recovery && npm run smoke:localllm-auto-max && npm run smoke:local-resource-policy && npm run smoke:context-budget-recovery && npm run smoke:session-runtime && npm run smoke:runtime-core && npm run smoke:progressive-tools && npm run smoke:truthful-completion && npm run smoke:document-artifact-quality && npm run smoke:writing-specialist-routing && npm run smoke:workspace-secret-false-positive && npm run smoke:provider-handoff && npm run eval:local-first-agent && npm run eval:provider-attribution && npm run smoke:runtime-compat && npm run smoke:autoupdate && npm run smoke:web-api && npm run smoke:math-rendering && npm run smoke:web-ui && npm run smoke:web-autostart && npm run smoke:webapp-command && npm run smoke:web-port-fallback && npm run smoke:docker-command && npm run smoke:coding-tools && npm run smoke:dynamic-step-budget && npm run smoke:execution-policy && npm run smoke:aaps-adapter && npm run smoke:auxiliary-tools && npm run smoke:perception-research && npm run smoke:deep-research && npm run smoke:public-research && npm run smoke:safe-chat && npm run smoke:auth && npm run smoke:agentlink && npm run smoke:canvas-artifacts && npm run smoke:capabilities && npm run smoke:mcp && npm run smoke:model-roles && npm run smoke:platform && npm run smoke:permission-modes && npm run smoke:skills && npm run smoke:skillmesh && npm run smoke:supervision-ledger && npm run smoke:tmux-tools && npm run smoke:long-jobs && npm run smoke:run-stdin && npm run smoke:cli-chat && npm run smoke:inbox",
|
|
280
|
+
"test": "npm run check && npm run smoke:integration-production-mount && npm run smoke:integration-storage-authority && npm run smoke:integration-retained-durable-common && npm run smoke:integration-retained-file-lock && npm run smoke:integration-retained-event-ledger && npm run smoke:integration-retained-event-ledger-bundle && npm run smoke:integration-retained-repository-kernel && npm run smoke:integration-retained-session-state-store && npm run smoke:integration-retained-native-session-repository-state && npm run smoke:integration-retained-native-execution-evidence && npm run smoke:integration-retained-runtime-repository-surface && npm run smoke:integration-retained-runtime-repository-phase-b && npm run smoke:integration-runtime-repository-contract && npm run smoke:integration-runtime-authority && npm run smoke:integration-api && npm run smoke:integration-sandbox-profile && npm run smoke:execution-worker && npm run smoke:execution-runtime-bundle && npm run smoke:execution-worker-server && npm run smoke:execution-worker-systemd-boundary && npm run smoke:integration-analysis-coordinator && npm run smoke:integration-document-artifacts && npm run smoke:integration-document-content && npm run test:document-worker && npm run smoke:integration-document-worker-cross-boundary && npm run smoke:integration-document-session-broker && npm run smoke:integration-document-revision && npm run smoke:integration-grounded-search && npm run smoke:integration-analysis-planner && npm run smoke:integration-analysis-session-service && npm run smoke:integration-analysis-api-server && npm run smoke:localllm-provider && npm run smoke:localllm-model-tiers && npm run smoke:localllm-code-routing && npm run smoke:local-failure-recovery && npm run smoke:localllm-auto-max && npm run smoke:local-resource-policy && npm run smoke:context-budget-recovery && npm run smoke:session-runtime && npm run smoke:runtime-core && npm run smoke:progressive-tools && npm run smoke:truthful-completion && npm run smoke:writing-specialist-routing && npm run eval:local-first-agent && npm run eval:provider-attribution && npm run smoke:runtime-compat && npm run smoke:autoupdate && npm run smoke:web-api && npm run smoke:math-rendering && npm run smoke:web-ui && npm run smoke:web-autostart && npm run smoke:webapp-command && npm run smoke:web-port-fallback && npm run smoke:docker-command && npm run smoke:coding-tools && npm run smoke:dynamic-step-budget && npm run smoke:execution-policy && npm run smoke:aaps-adapter && npm run smoke:auxiliary-tools && npm run smoke:perception-research && npm run smoke:deep-research && npm run smoke:public-research && npm run smoke:safe-chat && npm run smoke:auth && npm run smoke:agentlink && npm run smoke:canvas-artifacts && npm run smoke:capabilities && npm run smoke:mcp && npm run smoke:model-roles && npm run smoke:platform && npm run smoke:permission-modes && npm run smoke:skills && npm run smoke:skillmesh && npm run smoke:supervision-ledger && npm run smoke:tmux-tools && npm run smoke:long-jobs && npm run smoke:run-stdin && npm run smoke:cli-chat && npm run smoke:inbox",
|
|
233
281
|
"pack:dry-run": "npm pack --dry-run",
|
|
234
282
|
"smoke:capabilities": "node scripts/smoke-capabilities.js"
|
|
235
283
|
},
|