@open-agent-toolkit/cli 0.2.71 → 0.2.73

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.
@@ -4,7 +4,7 @@ description: Use when delegating work to subagents or choosing a model for a tas
4
4
  compatibility: Self-contained; no OAT installation required.
5
5
  user-invocable: true
6
6
  metadata:
7
- version: 1.0.3
7
+ version: 1.0.4
8
8
  ---
9
9
 
10
10
  # Subagent Orchestration
@@ -49,13 +49,13 @@ Classify in order: deterministic verifiability, silent-miss risk,
49
49
  dispersed-context reconciliation, ambiguity or novelty, then consequence.
50
50
  File count and duration alone never justify escalation.
51
51
 
52
- | Task class | Contract |
53
- | ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------- |
54
- | `mechanical-recon` | Deterministic inventories, parity checks, enumeration, lint/test/build runs. Misses are visible. Optimize for cost and throughput. |
55
- | `intelligent-recon` | Interpreting unfamiliar code, semantics, or policy; auditing API usage. A miss could be silent. Needs reliable judgment and tool use. |
56
- | `default-implementation` | Normal multi-file coding, debugging, and reconciliation of dispersed context in one bounded scope. |
57
- | `hard-reasoning` | Ambiguous debugging, architecture analysis, novel problems, competing interpretations. |
58
- | `consequential` | Security, release safety, incidents, irreversible operations, adversarial analysis, foundational decisions, final load-bearing review. |
52
+ | Task class | Contract |
53
+ | ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
54
+ | `mechanical-recon` | Deterministic inventories, parity checks, bounded extraction/counterexample searches, and command runs whose misses are cheaply checked. Optimize for cost and throughput. |
55
+ | `intelligent-recon` | Interpreting unfamiliar code, semantics, or policy; auditing API usage. A miss could be silent. Needs reliable judgment and tool use. |
56
+ | `default-implementation` | Normal multi-file coding, debugging, and context-dependent implementation in one bounded scope. |
57
+ | `hard-reasoning` | Ambiguous debugging, architecture analysis, novel problems, competing interpretations. |
58
+ | `consequential` | Security, release safety, incidents, irreversible operations, judgment-bearing adversarial analysis, foundational decisions, final load-bearing review. |
59
59
 
60
60
  Escalation boundaries:
61
61
 
@@ -66,7 +66,16 @@ Escalation boundaries:
66
66
  - Default → hard reasoning when ambiguity, novelty, or reasoning difficulty
67
67
  dominates. Large context alone is not a reason.
68
68
  - Any class → consequential when security, production impact,
69
- irreversibility, adversarial behavior, or expensive failure dominates.
69
+ irreversibility, judgment-bearing adversarial analysis, or expensive failure
70
+ dominates.
71
+
72
+ Recon wave names do not determine task class. Bounded citation reopening,
73
+ inventory comparison, counterexample search, and mechanical dossier
74
+ grouping/deduplication may remain `mechanical-recon` when their misses are
75
+ visible and cheaply checked. Interpreting ambiguous evidence, deciding between
76
+ competing explanations, or making a consequential final review remains at the
77
+ class required by that judgment. Narrow an over-broad assignment before
78
+ escalating it, and keep sufficiency judgment in the caller.
70
79
 
71
80
  **Never route below a class floor.** When uncertain between two classes, use
72
81
  the stronger one.
@@ -37,13 +37,13 @@ Classify in this order: deterministic verifiability, silent-miss risk,
37
37
  dispersed-context reconciliation, ambiguity or novelty, then consequence.
38
38
  File count and duration alone never justify escalation.
39
39
 
40
- | Task class | Qualification contract |
41
- | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------- |
42
- | `mechanical-recon` | Deterministic inventories, parity checks, exact extraction, or command execution whose misses are visible and cheaply verified. |
43
- | `intelligent-recon` | Interpretation of unfamiliar code, policy, semantics, or evidence where a plausible miss could survive mechanical validation. |
44
- | `default-implementation` | Independently bounded implementation or dossier work that must retain and reconcile dispersed context. |
45
- | `hard-reasoning` | Ambiguity, novelty, architecture, difficult diagnosis, or competing interpretations dominates. |
46
- | `consequential` | Security, release safety, irreversible effects, adversarial analysis, foundational decisions, or expensive failure dominates. |
40
+ | Task class | Qualification contract |
41
+ | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
42
+ | `mechanical-recon` | Deterministic inventories, parity checks, exact extraction, bounded counterexample searches, or command execution whose misses are visible and cheaply verified. |
43
+ | `intelligent-recon` | Interpretation of unfamiliar code, policy, semantics, or evidence where a plausible miss could survive mechanical validation. |
44
+ | `default-implementation` | Independently bounded implementation that must retain and reconcile dispersed context. |
45
+ | `hard-reasoning` | Ambiguity, novelty, architecture, difficult diagnosis, or competing interpretations dominates. |
46
+ | `consequential` | Security, release safety, irreversible effects, judgment-bearing adversarial analysis, foundational decisions, or expensive failure dominates. |
47
47
 
48
48
  When uncertain, use the stronger class. Never select below a supplied floor.
49
49
 
@@ -78,13 +78,22 @@ single entry cannot express a choice, only a default.
78
78
  - Default implementation to hard reasoning when ambiguity, novelty, or
79
79
  reasoning difficulty dominates.
80
80
  - Any class to consequential when security, production impact, irreversibility,
81
- adversarial behavior, or expensive failure dominates.
81
+ judgment-bearing adversarial analysis, or expensive failure dominates.
82
82
 
83
83
  Narrow a poorly decomposed task before escalating its model. Model capability
84
84
  never repairs an over-broad objective. A consequential classification does not
85
85
  by itself justify top effort; raise effort only when deeper reasoning is also a
86
86
  bottleneck.
87
87
 
88
+ For reconnaissance, classify the concrete assignment rather than the wave
89
+ name. Reopening named citations, comparing an explicit inventory, seeking
90
+ counterexamples to a specified claim, and mechanically grouping or
91
+ deduplicating dossiers can remain `mechanical-recon`. A worker that must infer
92
+ what counts as a material finding, reconcile ambiguous explanations, or issue a
93
+ security or final-review judgment needs the corresponding stronger class. Cheap
94
+ evidence acquisition never transfers sufficiency or conclusion ownership away
95
+ from the caller.
96
+
88
97
  ## Eligibility
89
98
 
90
99
  Eliminate ineligible routes before ranking capability, cost, or speed. Verify:
@@ -1 +1 @@
1
- {"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/apply.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAiB3D,OAAO,KAAK,EACV,aAAa,EACb,uBAAuB,EAExB,MAAM,cAAc,CAAC;AAgVtB,wBAAsB,YAAY,CAChC,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE,aAAa,EAAE,EAC3B,YAAY,EAAE,uBAAuB,GACpC,OAAO,CAAC,IAAI,CAAC,CAsMf"}
1
+ {"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/apply.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAoB3D,OAAO,KAAK,EACV,aAAa,EACb,uBAAuB,EAExB,MAAM,cAAc,CAAC;AA6XtB,wBAAsB,YAAY,CAChC,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE,aAAa,EAAE,EAC3B,YAAY,EAAE,uBAAuB,GACpC,OAAO,CAAC,IAAI,CAAC,CAyMf"}
@@ -1,3 +1,4 @@
1
+ import { hasMaterializationChanges, } from '../../providers/shared/materialization-extension.js';
1
2
  import { getProviderRegistrations, } from '../../providers/shared/registry.js';
2
3
  import { adviseProviderRefresh, } from '../../providers/shared/restart-adviser.js';
3
4
  import { buildCollectionLifecycle, countPlannedOperations, formatCollectionLifecycle, toSyncOutputPlan, } from './sync.utils.js';
@@ -96,6 +97,47 @@ function normalizeOperationResults(plan, result) {
96
97
  };
97
98
  });
98
99
  }
100
+ /**
101
+ * Records the outcome of the extension plans the apply step will not run.
102
+ *
103
+ * A plan whose operations are all skips is never applied — there is nothing to
104
+ * write — and a scope with no work at all is skipped whole before the extension
105
+ * loop is reached, so neither path populates `operationResults`. The report and
106
+ * the JSON payload still describe every planned operation, so an unrecorded
107
+ * skip rendered as `result: unknown` while the identical skip rendered as
108
+ * `current` whenever some sibling operation happened to make the apply step run.
109
+ *
110
+ * Both extension implementations record a skip as `status: 'current'` without
111
+ * touching the filesystem, so that is what is reproduced here: same statuses,
112
+ * same per-extension counts, one answer for a skip regardless of which path
113
+ * produced it. Recording the results here rather than defaulting the renderer
114
+ * keeps the `--json` payload consistent too, since its consumers read
115
+ * `materializationExtensions[].operationResults` and the sibling counts
116
+ * directly.
117
+ */
118
+ function recordUnappliedExtensionSkips(scopePlan) {
119
+ for (const plan of scopePlan.materializationExtensionPlans) {
120
+ if (hasMaterializationChanges(plan)) {
121
+ continue;
122
+ }
123
+ const summary = scopePlan.materializationExtensions.find((candidate) => candidate.provider === plan.provider);
124
+ if (!summary) {
125
+ continue;
126
+ }
127
+ const operationResults = plan.operations.map((operation) => ({
128
+ provider: operation.provider,
129
+ target: operation.target,
130
+ path: operation.path,
131
+ entryName: operation.entryName,
132
+ action: operation.action,
133
+ status: 'current',
134
+ }));
135
+ summary.applied = 0;
136
+ summary.failed = 0;
137
+ summary.skipped = operationResults.length;
138
+ summary.operationResults = operationResults;
139
+ }
140
+ }
99
141
  function materializationOperationIdentity(operation) {
100
142
  return JSON.stringify([
101
143
  operation.provider,
@@ -227,6 +269,9 @@ export async function runSyncApply(context, scopePlans, dependencies) {
227
269
  const coreApplyEvidence = [];
228
270
  const extensionOperationResults = [];
229
271
  for (const scopePlan of scopePlans) {
272
+ // Runs before the two `continue`s below, both of which can leave an
273
+ // all-skip extension plan unapplied and therefore unreported.
274
+ recordUnappliedExtensionSkips(scopePlan);
230
275
  const hasSyncEntries = scopePlan.plan.entries.length > 0 ||
231
276
  scopePlan.plan.removals.length > 0 ||
232
277
  (scopePlan.plan.collections?.length ?? 0) > 0;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@open-agent-toolkit/cli",
3
- "version": "0.2.71",
3
+ "version": "0.2.73",
4
4
  "private": false,
5
5
  "description": "Open Agent Toolkit CLI",
6
6
  "homepage": "https://github.com/voxmedia/open-agent-toolkit/tree/main/packages/cli",
@@ -34,7 +34,7 @@
34
34
  "ora": "^9.0.0",
35
35
  "yaml": "2.8.2",
36
36
  "zod": "^3.25.76",
37
- "@open-agent-toolkit/control-plane": "0.2.71"
37
+ "@open-agent-toolkit/control-plane": "0.2.73"
38
38
  },
39
39
  "devDependencies": {
40
40
  "@types/node": "^22.10.0",