@lazyingart/agintiflow 0.20.203 → 0.20.205
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/.env.example +15 -0
- package/README.md +1 -1
- package/bin/aginti-integration.js +7 -0
- package/docs/deep-research-engine.md +190 -24
- package/docs/external-skill-packs.md +30 -0
- package/docs/perception-and-web-research.md +11 -5
- package/docs/runtime-modes-and-autonomy.md +8 -0
- package/docs/student-committee-supervisor.md +15 -3
- package/docs/supervised-capability-curriculum.md +5 -0
- package/docs/supervision-campaign-ledger.md +55 -0
- package/package.json +12 -3
- package/scripts/eval-provider-attribution.js +155 -0
- package/scripts/smoke-cli-chat.js +17 -0
- package/scripts/smoke-coding-tools.js +297 -0
- package/scripts/smoke-context-budget-recovery.js +180 -0
- package/scripts/smoke-deep-research.js +1197 -15
- package/scripts/smoke-dynamic-step-budget.js +408 -0
- package/scripts/smoke-integration-production-mount.js +1135 -0
- package/scripts/smoke-model-roles.js +204 -1
- package/scripts/smoke-progressive-tool-selection.js +331 -1
- package/scripts/smoke-scs-evidence-visibility.js +720 -1
- package/scripts/smoke-session-runtime.js +6 -0
- package/scripts/smoke-skillmesh.js +5 -5
- package/scripts/smoke-skills.js +67 -0
- package/scripts/smoke-supervision-ledger.js +87 -0
- package/scripts/supervision-ledger.js +251 -0
- package/skills/deep-research/SKILL.md +51 -1
- package/src/agent-runner.js +1565 -84
- package/src/behavior-contract.js +2 -1
- package/src/cli.js +16 -0
- package/src/command-policy.js +141 -5
- package/src/config.js +26 -1
- package/src/deep-research.js +1349 -174
- package/src/integration-api.js +1060 -0
- package/src/integration-artifacts.js +241 -0
- package/src/integration-auth.js +425 -0
- package/src/integration-cli.js +210 -0
- package/src/integration-config.js +442 -0
- package/src/integration-core-event-projector.js +589 -0
- package/src/integration-durable-common.js +541 -0
- package/src/integration-event-ledger-store.js +458 -0
- package/src/integration-events.js +491 -0
- package/src/integration-idempotency-store.js +1075 -0
- package/src/integration-native-executor.js +600 -0
- package/src/integration-policy.js +700 -0
- package/src/integration-run-registry.js +168 -0
- package/src/integration-runtime-authority.js +2339 -0
- package/src/integration-sandbox-profile.js +1329 -0
- package/src/integration-server.js +796 -0
- package/src/integration-session-persistence.js +504 -0
- package/src/integration-session-service.js +486 -0
- package/src/json-specialist.js +10 -0
- package/src/model-client.js +35 -15
- package/src/perception-tools.js +1 -1
- package/src/permission-advice.js +34 -0
- package/src/progressive-tool-selection.js +74 -5
- package/src/provider-contract.js +1 -1
- package/src/redaction.js +1 -1
- package/src/research-routing.js +33 -0
- package/src/scs-controller.js +382 -19
- package/src/scs-evidence.js +1198 -8
- package/src/session-runtime.js +18 -0
- package/src/session-store.js +503 -416
- package/src/skill-library.js +72 -2
- package/src/step-budget-controller.js +102 -1
- package/src/tool-contract.js +29 -7
- package/src/web-search.js +496 -6
- package/src/workspace-tools.js +90 -15
package/.env.example
CHANGED
|
@@ -13,6 +13,11 @@ AGINTI_LOCALLLM_VISION_MODEL=localllm-vision-xl
|
|
|
13
13
|
AGINTI_LOCALLLM_CONTEXT_TOKENS=32768
|
|
14
14
|
AGINTI_LOCALLLM_MAX_OUTPUT_TOKENS=8192
|
|
15
15
|
AGINTI_LOCALLLM_TOOL_SCHEMA_TOKENS=4096
|
|
16
|
+
# Committee JSON uses the same-provider route model when possible. LocalLLM uses
|
|
17
|
+
# deterministic contract/evidence validation by default; hosted providers keep
|
|
18
|
+
# the independent model validator. Set `model` to force model validation.
|
|
19
|
+
AGINTI_SCS_VALIDATION_MODE=auto
|
|
20
|
+
AGINTI_SCS_MODEL_TIMEOUT_MS=45000
|
|
16
21
|
|
|
17
22
|
# Genuine implementation work uses the code alias only after authenticated model
|
|
18
23
|
# discovery confirms that exact configured alias; otherwise it remains on Deep.
|
|
@@ -33,6 +38,16 @@ AGINTI_WRITING_PROVIDER=
|
|
|
33
38
|
AGINTI_WRITING_MODEL=
|
|
34
39
|
AGINTI_ALLOW_HOSTED_WRITING_SPECIALIST=false
|
|
35
40
|
|
|
41
|
+
# Optional Agent Skills interoperability. Existing ~/.agents/skills,
|
|
42
|
+
# ~/.codex/skills, and ~/.claude/skills are discovered read-only by default.
|
|
43
|
+
AGINTIFLOW_DISCOVER_AGENT_SKILLS=true
|
|
44
|
+
# AGINTIFLOW_AGENT_SKILL_PACKS=/path/to/agent-skills:/path/to/more-skills
|
|
45
|
+
# AGINTIFLOW_SKILL_PACKS=/path/to/another-reviewed-pack
|
|
46
|
+
|
|
47
|
+
# Optional structured read-only roots for sibling routines/reference repos.
|
|
48
|
+
# Repeatable CLI equivalent: --read-root /absolute/reference/repo
|
|
49
|
+
# AGINTI_READ_ROOTS=/absolute/reference/repo:/another/reference/repo
|
|
50
|
+
|
|
36
51
|
# Optional local npm publish fallback. Prefer GitHub Actions Trusted Publishing.
|
|
37
52
|
NPM_TOKEN=
|
|
38
53
|
NODE_AUTH_TOKEN=
|
package/README.md
CHANGED
|
@@ -54,7 +54,7 @@ Most agent tools are either a chat box with hidden state or an expensive one-mod
|
|
|
54
54
|
| Disciplined by default | `AGINTI.md` starts with a behavior contract: surface ambiguity, keep edits surgical, avoid speculative complexity, verify outcomes, and respect permission blockers. |
|
|
55
55
|
| Role-based models | Route, main, spare, wrapper, and auxiliary image roles are separate. LocalLLM supplies the default fast/deep lanes; DeepSeek, OpenAI, OpenRouter, Qwen, and Venice are optional explicit routes. |
|
|
56
56
|
| Writing without agent noise | `writing_specialist` drafts novels, books, scripts, essays, and paper prose in an isolated writing-only context on the active provider. Cross-provider writing requires explicit permission; ambient keys and model arguments cannot silently switch a LocalLLM session to a hosted model. The main agent then handles files, formatting, citations, checks, and artifacts. |
|
|
57
|
-
| Visual and web evidence | `read_image` keeps local pixels local. Fast search has provider fallback; exact
|
|
57
|
+
| Visual and web evidence | `read_image` keeps local pixels local. Fast search has provider fallback; standard/deep research merges independent indexes; exact HTML/PDF reads preserve hashes and metadata; `deep_research` adds resumable planning, parallel retrieval, exact-quote evidence IDs, gap filling, synthesis, and claim-level citation auditing on the active provider. |
|
|
58
58
|
| Scouts before big work | Parallel scouts can cheaply map architecture, tests, risks, symbols, and integration points before the main executor edits anything. |
|
|
59
59
|
| SCS by default | Student-Committee-Supervisor mode adds a typed gate: committee drafts, student approves/monitors, supervisor executes. Use `/scs off` or `--no-scs` only when speed matters more than validation. |
|
|
60
60
|
| AAPS for large workflows | AAPS describes top-down agentic pipeline scripts; AgInTiFlow can act as the interactive backend that validates, compiles, and executes those workflows. |
|
|
@@ -15,36 +15,100 @@ real value.
|
|
|
15
15
|
The implementation follows the strongest production patterns without making
|
|
16
16
|
every query an unbounded agent swarm:
|
|
17
17
|
|
|
18
|
-
1. **Plan**: the active provider decomposes the question
|
|
19
|
-
subquestions, search queries, preferred source types,
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
18
|
+
1. **Plan**: a fast routing model on the active provider decomposes the question
|
|
19
|
+
into non-overlapping subquestions, search queries, preferred source types,
|
|
20
|
+
and exclusions. If that structured call fails, the main model gets one
|
|
21
|
+
bounded retry; the workflow never switches providers implicitly.
|
|
22
|
+
2. **Search**: queries run with bounded concurrency. Quick lookup uses the
|
|
23
|
+
no-key DuckDuckGo-to-Bing fallback. Standard/deep research uses a bounded
|
|
24
|
+
ensemble that merges DuckDuckGo and Bing indexes, plus Brave only when it is
|
|
25
|
+
explicitly configured. A paper-oriented request receives one initial bounded
|
|
26
|
+
scholarly discovery pass against Crossref and arXiv, attached to the most
|
|
27
|
+
paper-like planned query. If the independently verified source minimum is
|
|
28
|
+
still open, the single gap pass may retry that lane once with a different
|
|
29
|
+
planner-derived query. This improves paper recall and metadata identity
|
|
30
|
+
without multiplying every query or creating bursty arXiv traffic.
|
|
31
|
+
When the request explicitly asks for official engineering or first-party
|
|
32
|
+
implementation evidence, one separate bounded query targets engineering,
|
|
33
|
+
documentation, system-card, and whitepaper surfaces. The selector reserves
|
|
34
|
+
one relevant first-party candidate when available instead of letting a large
|
|
35
|
+
paper set erase the requested source class. Search snippets can guide
|
|
36
|
+
discovery, but they cannot satisfy verified first-party coverage or enter
|
|
37
|
+
synthesis as cited evidence.
|
|
38
|
+
Canonical duplicates found by multiple providers are promoted and retain
|
|
39
|
+
per-provider rank evidence. Multi-domain corpora receive separate bounded `site:`
|
|
23
40
|
queries matched to entity-specific subquestions instead of one fragile OR
|
|
24
|
-
expression.
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
41
|
+
expression. If an exact `site:` query returns no candidates, the engine
|
|
42
|
+
retries the same planner query once without the search-operator hint while
|
|
43
|
+
retaining the domain allowlist. This recovery stays inside the original
|
|
44
|
+
research run and is recorded in its checkpoint.
|
|
45
|
+
3. **Rank, diversify, and deduplicate**: canonical URLs remove tracking state.
|
|
46
|
+
Scholarly records additionally carry DOI, arXiv ID, normalized title,
|
|
47
|
+
provider, venue, author, PDF, and alternate-URL provenance. DOI publisher,
|
|
48
|
+
arXiv abstract, and arXiv PDF variants of one work collapse before source
|
|
49
|
+
budgeting, while the audit records how many variants were merged. A title
|
|
50
|
+
match is only a fallback and never merges records with conflicting DOI or
|
|
51
|
+
arXiv identities. A source
|
|
52
|
+
repository is useful implementation evidence but is not automatically an
|
|
53
|
+
official or scholarly paper merely because it is hosted on GitHub or has
|
|
54
|
+
`paper` in its path.
|
|
55
|
+
Topical overlap, independent provider rediscovery, discovery by multiple
|
|
56
|
+
planned queries, and domain-constrained intent rank candidates. Official or
|
|
57
|
+
scholarly status is a quality signal, not a substitute for relevance, so a
|
|
58
|
+
generic university citation guide cannot crowd out a paper merely because it
|
|
59
|
+
is hosted on an academic domain. Dictionary, translation, and citation-generator
|
|
60
|
+
pages are excluded when stronger policy-compliant evidence exists. Under a
|
|
61
|
+
strict `primary`, `official`, or `scholarly` policy, four relevant compliant
|
|
62
|
+
candidates are enough to exclude generic supplementary commentary entirely.
|
|
63
|
+
When at least four strongly topical compliant candidates exist, marginally
|
|
64
|
+
related academic pages are excluded as well;
|
|
65
|
+
a sparse set may add only enough relevant supplementary context to reach
|
|
66
|
+
that small floor, but a strict policy with zero compliant candidates fails
|
|
67
|
+
closed instead of accepting generic filler. Source budgets are ceilings rather than targets, and a
|
|
68
|
+
bounded diversity penalty prevents one domain from crowding every selected
|
|
69
|
+
source.
|
|
29
70
|
4. **Read exact sources**: `read_web_page` validates every redirect before the
|
|
30
71
|
next request, rejects private DNS resolutions, streams bounded bytes, strips
|
|
31
72
|
scripts/navigation, extracts article/main text and metadata, records hashes,
|
|
32
|
-
and marks all retrieved text as untrusted evidence.
|
|
73
|
+
and marks all retrieved text as untrusted evidence. Verified PDF response
|
|
74
|
+
bytes are passed to a bounded local `pdftotext` process when available, so
|
|
75
|
+
papers can contribute exact passages without sending the PDF to another
|
|
76
|
+
provider. If one exact scholarly landing page is inaccessible, the reader
|
|
77
|
+
tries only the same work's verified alternate landing/PDF URLs before giving
|
|
78
|
+
up; it never substitutes a nearby paper. When the original request requires
|
|
79
|
+
a paper, selected provider-supplied PDFs and arXiv, ACL Anthology,
|
|
80
|
+
OpenReview, and Nature landing pages are resolved to bounded PDF candidates
|
|
81
|
+
before evidence extraction. Direct PDF candidates receive the bounded 5 MiB
|
|
82
|
+
document allowance rather than the generic 2 MiB HTML-page allowance; larger
|
|
83
|
+
files still fail closed with the exact size error. Browser-verification,
|
|
84
|
+
CAPTCHA, and access-challenge HTML is marked unreadable instead of counting
|
|
85
|
+
its warning text as source evidence.
|
|
33
86
|
5. **Extract evidence**: isolated structured-output calls identify relevant
|
|
34
|
-
subquestions, claims, exact quotations, confidence, and limitations.
|
|
87
|
+
subquestions, claims, exact quotations, confidence, and limitations. The
|
|
88
|
+
active provider's fast routing model handles the parallel first pass. Only
|
|
89
|
+
failed sources are retried, at lower concurrency and a larger output budget,
|
|
90
|
+
with that provider's stronger main model. Every extracted claim receives a
|
|
91
|
+
stable evidence ID such as `S2-C3`.
|
|
35
92
|
6. **Verify**: deterministic code checks that quoted passages occur in the
|
|
36
93
|
exact retrieved source. Unverified quotations do not enter synthesis.
|
|
37
94
|
7. **Fill gaps**: standard/deep runs may issue one bounded follow-up pass for
|
|
38
|
-
uncovered subquestions
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
95
|
+
uncovered subquestions, insufficient independent readable primary evidence,
|
|
96
|
+
or a requested first-party class that has not produced readable,
|
|
97
|
+
quote-verified evidence, when query and source budgets remain.
|
|
98
|
+
8. **Synthesize**: the active provider's main model receives verified evidence
|
|
99
|
+
rather than arbitrary page text. Every substantive paragraph and finding
|
|
100
|
+
cites exact evidence IDs instead of merely naming a source. A failed main
|
|
101
|
+
synthesis gets one same-provider fast-model fallback.
|
|
102
|
+
9. **Audit**: deterministic code removes unknown or unverified evidence IDs,
|
|
103
|
+
derives visible source citations from accepted evidence records, removes
|
|
104
|
+
unsupported synthesis statements, then reports claim, quotation, citation,
|
|
105
|
+
question, domain, PDF, and independent primary-source coverage. A second
|
|
106
|
+
audit checks the cleaned synthesis; rejected provider IDs remain diagnostic
|
|
107
|
+
warnings but do not make the delivered report's final audit look dirty.
|
|
46
108
|
10. **Persist**: every stage checkpoints one JSON state file. The final cited
|
|
47
|
-
Markdown report is saved beside it
|
|
109
|
+
Markdown report is saved beside it by default, or written directly to a
|
|
110
|
+
guarded workspace-relative `outputPath` when the caller requests a durable
|
|
111
|
+
filename, then sent to the canvas.
|
|
48
112
|
|
|
49
113
|
This combines the orchestrator/worker and separate citation-pass lessons
|
|
50
114
|
described by [Anthropic's production research
|
|
@@ -67,6 +131,33 @@ The caller may reduce these budgets, but hard caps remain 12 queries and 24
|
|
|
67
131
|
sources. Search/page concurrency is bounded to six and defaults to three or
|
|
68
132
|
four.
|
|
69
133
|
|
|
134
|
+
Explicit evidence requirements are derived from both the tool arguments and
|
|
135
|
+
the authoritative original user goal. A planner may shorten the research
|
|
136
|
+
question, but cannot silently drop requirements such as “compare at least three
|
|
137
|
+
independent primary sources,” “read a paper/PDF when available,” or “include
|
|
138
|
+
negative evidence.” These requirements are fingerprinted and checkpointed.
|
|
139
|
+
|
|
140
|
+
Planning and evidence extraction deliberately use the configured routing model
|
|
141
|
+
when it belongs to a hosted active provider. Synthesis uses the configured main
|
|
142
|
+
model. For LocalLLM, when the outer agent has already selected and loaded its
|
|
143
|
+
main model, every research stage reuses that resident model unless a dedicated
|
|
144
|
+
extraction model was explicitly configured. This avoids a costly GPU residency
|
|
145
|
+
swap; local evidence extraction is bounded to two concurrent calls by default.
|
|
146
|
+
Failed evidence calls are retried selectively rather than repeating every
|
|
147
|
+
successful source.
|
|
148
|
+
|
|
149
|
+
The same residency rule applies to the outer SCS committee plan for a LocalLLM
|
|
150
|
+
research task. It reuses the selected executor model instead of waiting on a
|
|
151
|
+
second local route-model queue before the bounded research workflow can start.
|
|
152
|
+
|
|
153
|
+
Planner-produced concise queries take precedence over the original user brief.
|
|
154
|
+
The raw brief is retained as a search query only when it is already concise;
|
|
155
|
+
long conversational instructions are research context, not a literal search
|
|
156
|
+
engine query. For DeepSeek, bounded JSON transformations explicitly use
|
|
157
|
+
non-thinking mode. The multi-stage workflow supplies the reasoning structure,
|
|
158
|
+
while disabling hidden reasoning prevents a small extraction object from
|
|
159
|
+
spending its entire output budget before emitting JSON.
|
|
160
|
+
|
|
70
161
|
## Usage
|
|
71
162
|
|
|
72
163
|
Interactive:
|
|
@@ -83,7 +174,11 @@ An agent can call:
|
|
|
83
174
|
"query": "What evidence supports the current design choices?",
|
|
84
175
|
"depth": "standard",
|
|
85
176
|
"sourcePolicy": "primary",
|
|
86
|
-
"
|
|
177
|
+
"requirePdf": true,
|
|
178
|
+
"minIndependentSources": 3,
|
|
179
|
+
"includeNegativeEvidence": true,
|
|
180
|
+
"domains": ["docs.example.org", "arxiv.org"],
|
|
181
|
+
"outputPath": "reports/design-evidence.md"
|
|
87
182
|
}
|
|
88
183
|
```
|
|
89
184
|
|
|
@@ -94,6 +189,12 @@ is marked failed, preserves its attempts, and retries retrieval on resume
|
|
|
94
189
|
instead of caching an empty report as success. Checkpoint schema changes
|
|
95
190
|
invalidate old cached runs automatically.
|
|
96
191
|
|
|
192
|
+
`outputPath` is optional and must name a Markdown file inside the active
|
|
193
|
+
workspace. Repository internals such as `.git`, dependency trees such as
|
|
194
|
+
`node_modules`, path escapes, and symlink escapes are rejected. This lets the
|
|
195
|
+
bounded engine satisfy an exact report filename without granting the outer
|
|
196
|
+
agent access to private session artifacts.
|
|
197
|
+
|
|
97
198
|
## Artifacts
|
|
98
199
|
|
|
99
200
|
Each session stores:
|
|
@@ -103,6 +204,9 @@ artifacts/deep-research-RESEARCH_ID.json
|
|
|
103
204
|
artifacts/deep-research-RESEARCH_ID.md
|
|
104
205
|
```
|
|
105
206
|
|
|
207
|
+
When `outputPath` is supplied, the JSON checkpoint remains private to the
|
|
208
|
+
session while the report is also written to that exact guarded workspace path.
|
|
209
|
+
|
|
106
210
|
The JSON includes:
|
|
107
211
|
|
|
108
212
|
- objective, plan, query/source budgets, and source policy;
|
|
@@ -111,6 +215,12 @@ The JSON includes:
|
|
|
111
215
|
- readable source text and ranked passages;
|
|
112
216
|
- extracted claims, exact quotations, limitations, and question mappings;
|
|
113
217
|
- missing questions, source diversity, and quote-verification rates;
|
|
218
|
+
- explicit evidence requirements, parsed-PDF attempts, and independent verified
|
|
219
|
+
primary/scholarly source counts;
|
|
220
|
+
- DOI/arXiv work identities, alternate read attempts, and merged-variant counts;
|
|
221
|
+
- requested and verified first-party engineering source coverage;
|
|
222
|
+
- evidence that came only from search excerpts, kept distinct from readable
|
|
223
|
+
source verification;
|
|
114
224
|
- final synthesis and citation audit;
|
|
115
225
|
- stage/status fields used for crash-safe resume.
|
|
116
226
|
|
|
@@ -122,6 +232,35 @@ The default `auto` policy uses public no-key providers:
|
|
|
122
232
|
DuckDuckGo HTML -> Bing RSS
|
|
123
233
|
```
|
|
124
234
|
|
|
235
|
+
The `multi` policy used by standard/deep research queries all available
|
|
236
|
+
no-key indexes and merges their canonical results:
|
|
237
|
+
|
|
238
|
+
```text
|
|
239
|
+
DuckDuckGo HTML + Bing RSS (+ Brave when explicitly configured)
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
Paper-oriented `deep_research` requests keep that broad lane and add one
|
|
243
|
+
bounded scholarly lane initially; an unresolved independent-source contract
|
|
244
|
+
may trigger one additional scholarly call in the single gap pass:
|
|
245
|
+
|
|
246
|
+
```text
|
|
247
|
+
Crossref metadata + arXiv metadata/preprint links
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
For direct `web_search` use, `provider=scholarly` selects only Crossref and
|
|
251
|
+
arXiv, while `provider=research` combines the general and scholarly lanes.
|
|
252
|
+
`provider=crossref` and `provider=arxiv` remain available for a deliberately
|
|
253
|
+
index-specific lookup. These public endpoints require no API key; provider
|
|
254
|
+
failures remain visible in `providersTried` rather than being hidden.
|
|
255
|
+
|
|
256
|
+
An explicit request for official engineering writeups adds one source-class
|
|
257
|
+
query such as an engineering architecture or system-card lookup. This is not a
|
|
258
|
+
hardcoded vendor list: the planner names relevant first-party organizations
|
|
259
|
+
when it knows them, while deterministic routing preserves the requested source
|
|
260
|
+
class and records whether a readable first-party source actually supported a
|
|
261
|
+
quote-verified claim. A result-page excerpt alone is reported separately and
|
|
262
|
+
does not close that requirement.
|
|
263
|
+
|
|
125
264
|
For an explicitly configured Brave Search account:
|
|
126
265
|
|
|
127
266
|
```bash
|
|
@@ -140,17 +279,38 @@ through configuration or a tool argument.
|
|
|
140
279
|
- Domain allowlists and blocklists apply to search results, direct reads, and
|
|
141
280
|
redirect targets.
|
|
142
281
|
- Tracking parameters and fragments are removed before deduplication.
|
|
282
|
+
- arXiv abstract, HTML, versioned, and PDF URLs for the same paper collapse to
|
|
283
|
+
one canonical paper identity before source budgeting.
|
|
284
|
+
- DOI and arXiv variants are merged at the work level when identifiers or a
|
|
285
|
+
sufficiently specific normalized scholarly title agree. Conflicting DOI or
|
|
286
|
+
arXiv identities always remain separate even when titles match. Distinct
|
|
287
|
+
variant URLs remain in the audit and exact-source fallback ledger.
|
|
288
|
+
- Strict source policies do not fill unused capacity with blogs or social posts
|
|
289
|
+
once at least four relevant policy-compliant sources are available. This is a
|
|
290
|
+
quality floor, not a requirement to consume the configured source ceiling.
|
|
291
|
+
- When a PDF is explicitly required, evidence extraction does not begin until a
|
|
292
|
+
discovered PDF has yielded readable text. A hard requirement fails closed;
|
|
293
|
+
“when available” is allowed to proceed only when no bounded PDF candidate was
|
|
294
|
+
discoverable.
|
|
143
295
|
- Page bytes are bounded while streaming; extracted characters are bounded too.
|
|
296
|
+
- Direct PDF candidates use a bounded 5 MiB read allowance; ordinary pages keep
|
|
297
|
+
the lower 2 MiB allowance.
|
|
144
298
|
- HTML scripts, forms, navigation, footers, and similar noise are removed.
|
|
299
|
+
- Access-challenge pages are explicitly rejected as unreadable evidence.
|
|
145
300
|
- Retrieved text is always labeled untrusted and never treated as tool or agent
|
|
146
301
|
instructions.
|
|
147
|
-
- PDFs are hash-verified
|
|
148
|
-
|
|
302
|
+
- PDFs are always hash-verified. When local `pdftotext` is available, bounded
|
|
303
|
+
text and relevant passages are extracted from those exact bytes; otherwise
|
|
304
|
+
the result stays explicitly unreadable and preserves the extraction error.
|
|
149
305
|
- Synthesis sees only verified evidence records. Unknown citation IDs and
|
|
150
306
|
citations to sources without verified evidence are removed and reported.
|
|
151
307
|
- Provider selection remains explicit. Deep research uses the active provider;
|
|
152
308
|
it does not silently escape LocalLLM or DeepSeek because another API key is
|
|
153
309
|
present.
|
|
310
|
+
- Structured-output mode follows the active provider contract. DeepSeek and
|
|
311
|
+
LocalLLM use JSON-object output with a prompt fallback; providers that truly
|
|
312
|
+
support JSON Schema may use it. Unsupported response formats are not probed
|
|
313
|
+
on every research call.
|
|
154
314
|
|
|
155
315
|
## Quality Signals
|
|
156
316
|
|
|
@@ -160,6 +320,12 @@ prose:
|
|
|
160
320
|
- question coverage;
|
|
161
321
|
- readable source count;
|
|
162
322
|
- primary/scholarly source count;
|
|
323
|
+
- independent verified primary/scholarly source count;
|
|
324
|
+
- duplicate scholarly variants merged before source budgeting;
|
|
325
|
+
- verified first-party engineering/official source count when requested;
|
|
326
|
+
- search-excerpt-only source-match count, which is diagnostic and never enters
|
|
327
|
+
synthesis or satisfies readable first-party or independent-primary verification;
|
|
328
|
+
- parsed-PDF count and PDF requirement status;
|
|
163
329
|
- independent-domain count;
|
|
164
330
|
- exact-quote verification rate;
|
|
165
331
|
- statement-level citation coverage;
|
|
@@ -47,6 +47,36 @@ AgInTiFlow supports both its native frontmatter (`id`, `label`, `description`,
|
|
|
47
47
|
`triggers`, `tools`) and the broader Agent Skills dialect used by K-Dense
|
|
48
48
|
(`name`, `description`, `allowed-tools`, nested `metadata`).
|
|
49
49
|
|
|
50
|
+
## Standard Local Agent Skills
|
|
51
|
+
|
|
52
|
+
AgInTiFlow also discovers user-owned Agent Skills from these standard local
|
|
53
|
+
locations when they exist:
|
|
54
|
+
|
|
55
|
+
- `~/.agents/skills`
|
|
56
|
+
- `~/.codex/skills`
|
|
57
|
+
- `~/.claude/skills`
|
|
58
|
+
|
|
59
|
+
This is read-only interoperability. AgInTiFlow loads only `SKILL.md`, treats its
|
|
60
|
+
contents as guidance rather than executable authority, and still applies the
|
|
61
|
+
normal tool, command, permission, and irreversible-action policies. Built-in,
|
|
62
|
+
project-local, and reviewed SkillMesh skills continue to win on ID collisions.
|
|
63
|
+
|
|
64
|
+
Override the standard roots with a path-delimited list:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
AGINTIFLOW_AGENT_SKILL_PACKS=/path/to/agent-skills:/path/to/more-skills aginti skills
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Disable ambient discovery for a hardened or fully isolated runtime:
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
AGINTIFLOW_DISCOVER_AGENT_SKILLS=false aginti skills
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Selected skill context includes a bounded excerpt, section index, and the
|
|
77
|
+
read-only `SKILL.md` source path. This lets a tool-capable agent inspect the full
|
|
78
|
+
routine before a multi-stage task without bloating every ordinary chat turn.
|
|
79
|
+
|
|
50
80
|
## Design Rules
|
|
51
81
|
|
|
52
82
|
- External packs are optional. Missing packs do not block startup.
|
|
@@ -7,10 +7,10 @@ AgInTiFlow separates visual understanding, web search, and wrapper advice so eac
|
|
|
7
7
|
| Tool | Purpose | Evidence |
|
|
8
8
|
| --- | --- | --- |
|
|
9
9
|
| `read_image` | Read workspace screenshots, plots, scanned text, diagrams, or allowed remote image URLs. | Saves JSON and Markdown reports under `artifacts/perception/`, records image hashes, and sends the Markdown report to the canvas when used by an agent run. |
|
|
10
|
-
| `web_search` | Cheap raw search snippets. | Returns compact titles, URLs, snippets, and
|
|
11
|
-
| `read_web_page` | Read one exact public source instead of relying on a snippet. | Returns bounded article text, metadata, canonical URL, relevant passages, retrieval time, and content hash. |
|
|
10
|
+
| `web_search` | Cheap raw search snippets or a bounded multi-provider ensemble. | Returns compact titles, canonical URLs, snippets, provider attempts, and per-provider discovery evidence. |
|
|
11
|
+
| `read_web_page` | Read one exact public source instead of relying on a snippet. | Returns bounded article/PDF text, metadata, canonical URL, relevant passages, retrieval time, and content hash. |
|
|
12
12
|
| `web_research` | Sourced research unit for current or external information. | Saves `artifacts/research/*-web-research.json` with query, mode, source list, and answer. |
|
|
13
|
-
| `deep_research` | Plan, retrieve, verify, synthesize, and audit a genuinely multi-source question. | Saves resumable JSON state and a cited Markdown report with coverage metrics
|
|
13
|
+
| `deep_research` | Plan, retrieve, verify, synthesize, and audit a genuinely multi-source question. | Saves resumable JSON state and a cited Markdown report with exact claim-evidence IDs, coverage metrics, and an optional guarded workspace `outputPath`. |
|
|
14
14
|
| `research_wrapper` | Read-only strict-JSON second opinion from the selected wrapper. | Saves `artifacts/wrappers/*-research-wrapper.json` with wrapper, model, reasoning, metadata, result, and raw fallback output. |
|
|
15
15
|
|
|
16
16
|
## Defaults
|
|
@@ -20,8 +20,14 @@ AgInTiFlow separates visual understanding, web search, and wrapper advice so eac
|
|
|
20
20
|
- Codex image reading requires both `provider=codex` and explicitly enabled wrapper tools. It is not an automatic fallback.
|
|
21
21
|
- OpenAI image reading defaults to `AGINTI_PERCEPTION_MODEL=gpt-5.4-mini` and `AGINTI_PERCEPTION_REASONING=medium`, with fallback models remaining inside the same explicitly selected OpenAI provider.
|
|
22
22
|
- `web_research` defaults to lightweight snippet mode. The active LocalLLM can synthesize those returned snippets and sources during the next agent step without a second provider call.
|
|
23
|
-
- `web_search`
|
|
24
|
-
- `
|
|
23
|
+
- `web_search provider=auto` falls back from DuckDuckGo HTML to Bing RSS. `provider=multi` merges both indexes and adds Brave only when explicitly configured. Standard/deep research defaults to this ensemble; quick research stays on auto.
|
|
24
|
+
- Exact PDF responses are hashed first, then parsed locally with bounded `pdftotext` when available. Direct PDF candidates receive a bounded 5 MiB document allowance instead of the generic 2 MiB HTML-page allowance. An explicit original-goal PDF requirement resolves selected arXiv, ACL Anthology, OpenReview, or Nature landing pages before claim extraction; extraction failure remains visible rather than silently treating a snippet as full-paper evidence.
|
|
25
|
+
- `deep_research` stays on the active provider: its fast routing model plans and extracts sources in parallel, only failed extractions retry on the stronger main model, and the main model synthesizes the verified evidence. DeepSeek JSON transformations explicitly disable thinking mode and use its supported JSON-object contract; the bounded workflow, not hidden chain-of-thought, owns decomposition and verification. A failed synthesis may fall back once to the same-provider routing model. It never treats another provider's ambient credentials as permission. Visible source citations are derived from verified claim-level evidence IDs rather than trusted directly from model output.
|
|
26
|
+
- LocalLLM research reuses an already-selected resident main model for planning, extraction, and synthesis unless `deepResearchExtractionModel` is explicit. It limits extraction to two concurrent local calls by default, avoiding multi-model GPU thrash and four-way local inference contention.
|
|
27
|
+
- Candidate ranking requires topical evidence, provider/query rediscovery, or an explicit domain constraint. Academic or official hosting improves source quality but does not make an irrelevant page relevant. When a strict-policy run finds at least four strongly topical sources, marginally related academic pages cannot consume the remaining source budget.
|
|
28
|
+
- A domain-specific `site:` query that returns no candidates is retried once as the same plain planner query while the domain allowlist remains enforced. This bounded recovery is part of one research run, not an outer-agent manual search detour.
|
|
29
|
+
- Concise planner queries are searched before the raw request, and long conversational briefs are not sent verbatim to search engines. Explicit source-count, PDF, first-party, and negative-evidence requirements remain authoritative from the original goal. Paper-oriented runs add one bounded Crossref/arXiv discovery pass and may retry it once during the single gap pass when the independently verified source minimum remains open; DOI, arXiv HTML/abstract/PDF, and version URLs are merged as one scholarly work while conflicting identifiers remain separate and exact variants remain auditable fallback paths. First-party requirements close only on readable, quote-verified content. Search excerpts and access-challenge pages remain discovery diagnostics and never enter synthesis as cited evidence. Source budgets are ceilings: once a strict source policy has at least four relevant compliant candidates, blogs, social commentary, dictionaries, citation generators, and third-party paper utilities cannot pad the set; with zero compliant candidates, strict policy fails closed.
|
|
30
|
+
- A requested `deep_research outputPath` must be a Markdown file inside the active workspace. Path escapes, symlink escapes, `.git`, and `node_modules` are rejected, so an agent can deliver the requested report without reading private session artifacts.
|
|
25
31
|
- `web_research mode=openai` is accepted only for an active OpenAI session or when `allowHostedWebResearch=true`. A denied or failed hosted synthesis is returned with `ok=false`; any preserved snippets are labeled fallback evidence rather than hosted success.
|
|
26
32
|
- `json_specialist` stays on the active provider. A different provider requires `allowHostedJsonSpecialist=true`; ambient hosted keys and model-generated provider arguments cannot escalate a LocalLLM session.
|
|
27
33
|
- `research_wrapper` defaults to `AGINTI_RESEARCH_WRAPPER_MODEL=gpt-5.4-mini` and `AGINTI_RESEARCH_WRAPPER_REASONING=medium`.
|
|
@@ -29,10 +29,18 @@ Codex exposes these concerns as `--sandbox read-only|workspace-write|danger-full
|
|
|
29
29
|
|
|
30
30
|
- `-s safe|normal|danger` and `/safe`, `/normal`, `/danger`
|
|
31
31
|
- `--sandbox-mode host|docker-readonly|docker-workspace`
|
|
32
|
+
- repeatable `--read-root /absolute/reference/repository` for structured read-only cross-repository inspection
|
|
32
33
|
- `--package-install-policy block|prompt|allow`
|
|
33
34
|
- `--allow-shell|--no-shell`
|
|
34
35
|
- `--allow-destructive`
|
|
35
36
|
|
|
37
|
+
Read roots are narrower than danger mode. `inspect_project`, `list_files`,
|
|
38
|
+
`search_files`, `read_file`, and `read_image` may inspect an explicitly named
|
|
39
|
+
root, while every write still remains inside `--cwd`. Use read roots for
|
|
40
|
+
established sibling routines and reference repositories. Do not replace them
|
|
41
|
+
with recursive `grep`; use bounded workspace search or targeted `rg` with an
|
|
42
|
+
explicit path, relevant globs, and a result limit.
|
|
43
|
+
|
|
36
44
|
## Docker Package Installs
|
|
37
45
|
|
|
38
46
|
Docker package installs are safe when they match the sandbox contract.
|
|
@@ -26,12 +26,15 @@ Inside interactive chat:
|
|
|
26
26
|
|
|
27
27
|
## Role Contract
|
|
28
28
|
|
|
29
|
-
SCS uses the selected main model for
|
|
29
|
+
SCS uses the selected main model for execution. Hosted providers use a model
|
|
30
|
+
student by default. LocalLLM uses the same typed student contract with
|
|
31
|
+
deterministic runtime validation so periodic checks do not repeatedly occupy
|
|
32
|
+
the local inference queue.
|
|
30
33
|
|
|
31
34
|
| Role | Right | Boundary |
|
|
32
35
|
| --- | --- | --- |
|
|
33
36
|
| Committee | Draft one next-phase plan with acceptance criteria and stop conditions. | Cannot approve plans or call tools. |
|
|
34
|
-
| Student | Act as the independent validator: approve/veto the phase plan, review failure evidence, and approve/reject finish. | Cannot call tools, approve its own work, or override runtime safety. |
|
|
37
|
+
| Student | Act as the independent validator: approve/veto the phase plan, review failure evidence, and approve/reject finish. The implementation may be a model or the deterministic contract/evidence engine. | Cannot call tools, approve its own work, or override runtime safety. |
|
|
35
38
|
| Supervisor | Execute the approved phase with the existing browser, shell, file, canvas, and wrapper tools. | Cannot replace the strategic plan without student review. |
|
|
36
39
|
|
|
37
40
|
The runtime remains the real authority for command policy, filesystem guardrails, secret redaction, session persistence, and user interruption.
|
|
@@ -45,10 +48,12 @@ When SCS is active:
|
|
|
45
48
|
- The normal `createPlan()` path is replaced by a committee draft plus student approval.
|
|
46
49
|
- An approved supervisor instruction is injected into the execution loop.
|
|
47
50
|
- Failed, blocked, suspicious, or mismatched tools trigger a bounded student validator review.
|
|
48
|
-
- Every fourth execution step triggers a bounded progress review for long runs.
|
|
51
|
+
- Every fourth execution step triggers a bounded progress review for long runs. LocalLLM evaluates this directly from the runtime ledger without another inference call.
|
|
49
52
|
- `finish` and assistant-content completion pass through a final student gate.
|
|
50
53
|
- A deterministic task contract and evidence ledger are built under the student gate. The contract records required evidence categories such as file, command, artifact, browser, visual, git, or publish evidence. The ledger classifies recent tool and event evidence into those categories.
|
|
51
54
|
- The final gate compares the contract, approved plan, executor finish claim, and evidence ledger. A model approval cannot override missing deterministic evidence for evidence-bearing tasks unless the run is reporting a real external blocker.
|
|
55
|
+
- Audit, handoff, and readiness reports that publish command examples are source-grounded. Nonstandard command signatures must appear in an inspected Markdown code block, successful runtime command, or authoritative help output; prose that merely mentions a product or workflow cannot validate invented CLI syntax.
|
|
56
|
+
- Recoverable runtime controls such as malformed-tool retries, bounded discovery caps, and repeated-read guards remain execution feedback rather than external blockers. They cannot be used to justify a false "blocked but complete" finish.
|
|
52
57
|
- If the student validator rejects progress or finish, the runtime asks the committee for a new phase plan and sends that plan back through the student gate before the supervisor continues.
|
|
53
58
|
- Decisions are persisted as `scs.*` events and the phase pack is saved as a session artifact.
|
|
54
59
|
|
|
@@ -59,6 +64,13 @@ The current implementation is deliberately bounded:
|
|
|
59
64
|
- Finish rejections are capped to avoid deadlock.
|
|
60
65
|
- If the monitor cannot produce strict JSON, AgInTiFlow uses a conservative fallback decision and records the parser warning.
|
|
61
66
|
|
|
67
|
+
`AGINTI_SCS_VALIDATION_MODE=auto` is the default. `auto` selects deterministic
|
|
68
|
+
validation for LocalLLM and model validation for hosted providers. Use `model`
|
|
69
|
+
or `deterministic` only when explicitly testing one implementation. LocalLLM
|
|
70
|
+
committee planning has one bounded attempt and a deterministic hard-contract
|
|
71
|
+
fallback, so an unavailable or slow route model cannot turn validation into a
|
|
72
|
+
multi-minute retry loop.
|
|
73
|
+
|
|
62
74
|
## Auto Mode
|
|
63
75
|
|
|
64
76
|
`/scs auto` and `--scs auto` are the default for users who want cheap simple turns without losing strict validation on risky work. Auto mode activates SCS for high-risk, evidence-heavy, or long-running work. Signals include:
|
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
AgInTiFlow should be trained and verified by supervising real tasks, not by trusting the agent's final summary. Each curriculum run uses a clean project under `~/ProjectsLFS/Aginti-Test/`, runs AgInTiFlow through a persistent tmux session, and verifies artifacts from outside the agent.
|
|
4
4
|
|
|
5
|
+
Use `scripts/supervision-ledger.js` and
|
|
6
|
+
`docs/supervision-campaign-ledger.md` for the machine-readable campaign record.
|
|
7
|
+
The Markdown homework ledger remains the compact human handoff; it does not
|
|
8
|
+
replace the SQLite evidence record.
|
|
9
|
+
|
|
5
10
|
## Verification Contract
|
|
6
11
|
|
|
7
12
|
Every supervised task must end with independent checks:
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Supervision Campaign Ledger
|
|
2
|
+
|
|
3
|
+
Continuous AgInTiFlow validation uses a SQLite ledger instead of relying on a
|
|
4
|
+
chat transcript. The ledger records capability coverage, realistic scenarios,
|
|
5
|
+
individual test runs, runtime events, reusable fixes, versions, session IDs,
|
|
6
|
+
tmux ownership, and external evidence.
|
|
7
|
+
|
|
8
|
+
Initialize a campaign:
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
node scripts/supervision-ledger.js init \
|
|
12
|
+
--db /path/to/campaign.sqlite \
|
|
13
|
+
--campaign general-capability \
|
|
14
|
+
--objective "Make AgInTiFlow fast, robust, and generally capable" \
|
|
15
|
+
--aginti-version "$(node -p \"require('./package.json').version\")"
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Register coverage before testing:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
node scripts/supervision-ledger.js capability \
|
|
22
|
+
--db /path/to/campaign.sqlite --campaign general-capability \
|
|
23
|
+
--id media-chain --domain media --subdomain music-video-publish \
|
|
24
|
+
--description "Reuse Musia, LALACHAN, and LazyEdit without rebuilding them" \
|
|
25
|
+
--priority 90
|
|
26
|
+
|
|
27
|
+
node scripts/supervision-ledger.js scenario \
|
|
28
|
+
--db /path/to/campaign.sqlite --campaign general-capability \
|
|
29
|
+
--id media-chain-readiness --domain media --profile auto \
|
|
30
|
+
--prompt-quality normal \
|
|
31
|
+
--prompt "Inspect the established media chain without generating or publishing." \
|
|
32
|
+
--expected-outputs '["media-routine-readiness.md"]' \
|
|
33
|
+
--validation "Verify exact routine paths, command help, artifact bytes, and zero external writes."
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Create, start, and finish a concrete run with `test`, `start`, `event`, and
|
|
37
|
+
`finish`. Record a reusable product change with `fix`. Every command is an
|
|
38
|
+
idempotent or append-only SQLite operation suitable for a persistent tmux
|
|
39
|
+
campaign.
|
|
40
|
+
|
|
41
|
+
Test registration validates that any named capability and scenario belong to
|
|
42
|
+
the same campaign. Finishing a test updates the test, capability, and scenario
|
|
43
|
+
status in one SQLite transaction, so a typo cannot silently leave the campaign
|
|
44
|
+
matrix stale or split across contradictory states.
|
|
45
|
+
|
|
46
|
+
Inspect current coverage:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
node scripts/supervision-ledger.js status \
|
|
50
|
+
--db /path/to/campaign.sqlite --campaign general-capability
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Do not mark a test passed from the agent's prose. Verify session events, files,
|
|
54
|
+
checks, external state, and side-effect boundaries first, then store those paths
|
|
55
|
+
in `evidence_json` and `events`.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lazyingart/agintiflow",
|
|
3
|
-
"version": "0.20.
|
|
3
|
+
"version": "0.20.205",
|
|
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",
|
|
@@ -62,6 +62,9 @@
|
|
|
62
62
|
"scripts/real-deepseek-capabilities.js",
|
|
63
63
|
"scripts/postinstall-webapp.js",
|
|
64
64
|
"scripts/seed-supervised-homework.js",
|
|
65
|
+
"scripts/supervision-ledger.js",
|
|
66
|
+
"scripts/smoke-supervision-ledger.js",
|
|
67
|
+
"scripts/smoke-integration-production-mount.js",
|
|
65
68
|
"scripts/smoke-auxiliary-tools.js",
|
|
66
69
|
"scripts/smoke-agentlink.js",
|
|
67
70
|
"scripts/smoke-auth.js",
|
|
@@ -71,6 +74,7 @@
|
|
|
71
74
|
"scripts/smoke-coding-tools.js",
|
|
72
75
|
"scripts/smoke-docker-command.js",
|
|
73
76
|
"scripts/smoke-dynamic-step-budget.js",
|
|
77
|
+
"scripts/smoke-context-budget-recovery.js",
|
|
74
78
|
"scripts/smoke-execution-policy.js",
|
|
75
79
|
"scripts/smoke-capabilities.js",
|
|
76
80
|
"scripts/smoke-auto-update.js",
|
|
@@ -84,6 +88,7 @@
|
|
|
84
88
|
"scripts/smoke-progressive-tool-selection.js",
|
|
85
89
|
"scripts/smoke-truthful-completion.js",
|
|
86
90
|
"scripts/smoke-writing-specialist-routing.js",
|
|
91
|
+
"scripts/eval-provider-attribution.js",
|
|
87
92
|
"scripts/local-first-agent-eval.mjs",
|
|
88
93
|
"scripts/fixtures/local-first-agent-eval-fixtures.mjs",
|
|
89
94
|
"scripts/smoke-run-stdin.js",
|
|
@@ -118,13 +123,14 @@
|
|
|
118
123
|
"bin": {
|
|
119
124
|
"aginti": "bin/aginti-cli.js",
|
|
120
125
|
"aginti-cli": "bin/aginti-cli.js",
|
|
126
|
+
"aginti-integration": "bin/aginti-integration.js",
|
|
121
127
|
"aginti-public-research": "bin/aginti-public-research.js",
|
|
122
128
|
"aginti-safe-chat": "bin/aginti-safe-chat.js"
|
|
123
129
|
},
|
|
124
130
|
"scripts": {
|
|
125
131
|
"start": "node run.js",
|
|
126
132
|
"web": "node web.js",
|
|
127
|
-
"check": "node --check run.js && node --check web.js && node --check bin/aginti-cli.js && node --check bin/aginti-public-research.js && node --check bin/aginti-safe-chat.js && node --check src/*.js && node --check src/mcp/*.js && node --check public/*.js && node --check scripts/postinstall-webapp.js && node --check scripts/seed-supervised-homework.js && node --check scripts/eval-provider-attribution.js && node --check scripts/smoke-agentlink.js && node --check scripts/smoke-execution-policy.js && node --check scripts/smoke-math-rendering.js && node --check scripts/smoke-mcp.js && node --check scripts/smoke-public-research-wrapper.js && node --check scripts/smoke-runtime-core.js && node --check scripts/smoke-safe-chat.js && node --check scripts/smoke-web-ui.js && node --check scripts/smoke-scs-evidence-visibility.js && node --check scripts/fixtures/mcp-stdio-smoke-server.mjs",
|
|
133
|
+
"check": "node --check run.js && node --check web.js && node --check bin/aginti-cli.js && node --check bin/aginti-integration.js && node --check bin/aginti-public-research.js && node --check bin/aginti-safe-chat.js && node --check src/*.js && node --check src/mcp/*.js && node --check public/*.js && node --check scripts/postinstall-webapp.js && node --check scripts/seed-supervised-homework.js && node --check scripts/supervision-ledger.js && node --check scripts/smoke-supervision-ledger.js && node --check scripts/smoke-integration-production-mount.js && node --check scripts/eval-provider-attribution.js && node --check scripts/smoke-agentlink.js && node --check scripts/smoke-execution-policy.js && node --check scripts/smoke-math-rendering.js && node --check scripts/smoke-mcp.js && node --check scripts/smoke-public-research-wrapper.js && node --check scripts/smoke-runtime-core.js && node --check scripts/smoke-safe-chat.js && node --check scripts/smoke-web-ui.js && node --check scripts/smoke-scs-evidence-visibility.js && node --check scripts/fixtures/mcp-stdio-smoke-server.mjs",
|
|
128
134
|
"setup:toolchain-docker": "scripts/setup-agent-toolchain-docker.sh",
|
|
129
135
|
"smoke:coding-tools": "node scripts/smoke-coding-tools.js",
|
|
130
136
|
"smoke:dynamic-step-budget": "node scripts/smoke-dynamic-step-budget.js",
|
|
@@ -176,10 +182,13 @@
|
|
|
176
182
|
"real:deepseek": "node scripts/real-deepseek-capabilities.js",
|
|
177
183
|
"postinstall": "node scripts/postinstall-webapp.js",
|
|
178
184
|
"supervision:seed": "node scripts/seed-supervised-homework.js",
|
|
185
|
+
"supervision:ledger": "node scripts/supervision-ledger.js",
|
|
186
|
+
"smoke:supervision-ledger": "node scripts/smoke-supervision-ledger.js",
|
|
187
|
+
"smoke:integration-production-mount": "node scripts/smoke-integration-production-mount.js",
|
|
179
188
|
"storage:migrate": "node bin/aginti-cli.js storage migrate",
|
|
180
189
|
"publish:env": "node scripts/npm-publish-from-env.js publish --access public",
|
|
181
190
|
"publish:env:whoami": "node scripts/npm-publish-from-env.js whoami",
|
|
182
|
-
"test": "npm run check && npm run smoke:localllm-provider && npm run smoke:localllm-model-tiers && npm run smoke:localllm-code-routing && 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:tmux-tools && npm run smoke:long-jobs && npm run smoke:run-stdin && npm run smoke:cli-chat && npm run smoke:inbox",
|
|
191
|
+
"test": "npm run check && npm run smoke:integration-production-mount && npm run smoke:localllm-provider && npm run smoke:localllm-model-tiers && npm run smoke:localllm-code-routing && 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",
|
|
183
192
|
"pack:dry-run": "npm pack --dry-run",
|
|
184
193
|
"smoke:capabilities": "node scripts/smoke-capabilities.js"
|
|
185
194
|
},
|