@zenalexa/unicli 0.222.0 → 0.222.1

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.
Files changed (61) hide show
  1. package/AGENTS.md +1 -1
  2. package/README.md +114 -16
  3. package/README.zh-CN.md +97 -21
  4. package/dist/cli.d.ts.map +1 -1
  5. package/dist/cli.js +3 -0
  6. package/dist/cli.js.map +1 -1
  7. package/dist/commands/delivery.d.ts +17 -0
  8. package/dist/commands/delivery.d.ts.map +1 -0
  9. package/dist/commands/delivery.js +577 -0
  10. package/dist/commands/delivery.js.map +1 -0
  11. package/dist/commands/do.d.ts.map +1 -1
  12. package/dist/commands/do.js +3 -4
  13. package/dist/commands/do.js.map +1 -1
  14. package/dist/commands/extract.d.ts.map +1 -1
  15. package/dist/commands/extract.js +6 -2
  16. package/dist/commands/extract.js.map +1 -1
  17. package/dist/commands/runs.d.ts.map +1 -1
  18. package/dist/commands/runs.js +9 -5
  19. package/dist/commands/runs.js.map +1 -1
  20. package/dist/discovery/aliases.d.ts.map +1 -1
  21. package/dist/discovery/aliases.js +1 -0
  22. package/dist/discovery/aliases.js.map +1 -1
  23. package/dist/discovery/search.d.ts.map +1 -1
  24. package/dist/discovery/search.js +20 -0
  25. package/dist/discovery/search.js.map +1 -1
  26. package/dist/engine/delivery/index.d.ts +20 -0
  27. package/dist/engine/delivery/index.d.ts.map +1 -0
  28. package/dist/engine/delivery/index.js +20 -0
  29. package/dist/engine/delivery/index.js.map +1 -0
  30. package/dist/engine/delivery/planner.d.ts +19 -0
  31. package/dist/engine/delivery/planner.d.ts.map +1 -0
  32. package/dist/engine/delivery/planner.js +322 -0
  33. package/dist/engine/delivery/planner.js.map +1 -0
  34. package/dist/engine/delivery/repair.d.ts +17 -0
  35. package/dist/engine/delivery/repair.d.ts.map +1 -0
  36. package/dist/engine/delivery/repair.js +86 -0
  37. package/dist/engine/delivery/repair.js.map +1 -0
  38. package/dist/engine/delivery/session.d.ts +17 -0
  39. package/dist/engine/delivery/session.d.ts.map +1 -0
  40. package/dist/engine/delivery/session.js +78 -0
  41. package/dist/engine/delivery/session.js.map +1 -0
  42. package/dist/engine/delivery/trajectory.d.ts +17 -0
  43. package/dist/engine/delivery/trajectory.d.ts.map +1 -0
  44. package/dist/engine/delivery/trajectory.js +166 -0
  45. package/dist/engine/delivery/trajectory.js.map +1 -0
  46. package/dist/engine/delivery/types.d.ts +157 -0
  47. package/dist/engine/delivery/types.d.ts.map +1 -0
  48. package/dist/engine/delivery/types.js +16 -0
  49. package/dist/engine/delivery/types.js.map +1 -0
  50. package/dist/manifest.json +2 -2
  51. package/dist/output/error-writer.d.ts +23 -0
  52. package/dist/output/error-writer.d.ts.map +1 -0
  53. package/dist/output/error-writer.js +20 -0
  54. package/dist/output/error-writer.js.map +1 -0
  55. package/package.json +2 -2
  56. package/server.json +2 -2
  57. package/skills/unicli/SKILL.md +1 -1
  58. package/skills/unicli-claude-code/SKILL.md +1 -1
  59. package/skills/unicli-hermes/SKILL.md +1 -1
  60. package/src/adapters/instagram/reels.yaml +5 -7
  61. package/src/adapters/weread/shelf.yaml +1 -1
@@ -0,0 +1,166 @@
1
+ /**
2
+ * @owner src/engine/delivery/trajectory.ts
3
+ * @does Converts delivery state into a reviewable experiment trajectory with observations, hypotheses, and the next executable experiment.
4
+ * @needs src/engine/delivery/planner.ts, src/engine/delivery/types.ts
5
+ * @feeds future delivery ledgers, repair bridge, and operator CLI summaries.
6
+ * @breaks Trajectory output becomes misleading if assessment statuses stop mapping to verification and failure classifications.
7
+ * @invariants non-active assessments never produce next executable experiments.
8
+ * @side-effects none
9
+ * @perf O(attempts log attempts + strategies + gates) per trajectory.
10
+ * @concurrency pure and reentrant.
11
+ * @test tests/unit/engine-delivery-trajectory.test.ts
12
+ * @stability experimental
13
+ * @since 2026-05-24
14
+ */
15
+ import { assessDeliveryState, diagnoseDeliveryAttempt, evaluateDeliveryGates, } from "./planner.js";
16
+ export function buildDeliveryTrajectory(input) {
17
+ const assessment = assessDeliveryState(input);
18
+ const strategiesById = new Map(input.strategies.map((strategy) => [strategy.id, strategy]));
19
+ const trials = [...input.attempts]
20
+ .sort((left, right) => left.ordinal - right.ordinal)
21
+ .map((attempt) => {
22
+ const gateResults = evaluateDeliveryGates(input.objective, attempt);
23
+ return trialRecordFromAttempt({
24
+ attempt,
25
+ assessment: attempt.id === assessment.current_attempt_id ? assessment : undefined,
26
+ gateResults,
27
+ });
28
+ });
29
+ const verificationStatus = verificationStatusFromAssessment(assessment);
30
+ const nextExperiment = verificationStatus === "active"
31
+ ? nextExperimentFromAssessment(assessment, strategiesById)
32
+ : undefined;
33
+ return {
34
+ schema_version: "1",
35
+ objective_id: input.objective.id,
36
+ goal: input.objective.goal,
37
+ recorded_at: input.recorded_at ?? new Date().toISOString(),
38
+ verification_status: verificationStatus,
39
+ assessment,
40
+ trials,
41
+ ...(nextExperiment ? { next_experiment: nextExperiment } : {}),
42
+ };
43
+ }
44
+ function trialRecordFromAttempt(input) {
45
+ const failedGates = input.gateResults
46
+ .filter((gate) => !gate.passed)
47
+ .map((gate) => gate.name);
48
+ const status = input.assessment?.status ?? trialStatus(input.attempt, failedGates);
49
+ const diagnosis = input.assessment?.diagnosis ??
50
+ diagnosisForHistoricalAttempt(input.attempt, input.gateResults, failedGates);
51
+ const verificationStatus = verificationStatusFromTrial(status);
52
+ return {
53
+ id: input.attempt.id,
54
+ ordinal: input.attempt.ordinal,
55
+ run_id: input.attempt.run_id,
56
+ strategy_id: input.attempt.strategy_id,
57
+ status,
58
+ verification_status: verificationStatus,
59
+ failed_gates: failedGates,
60
+ classification: classifyTrial(diagnosis?.code, status),
61
+ ...(diagnosis?.code ? { diagnosis_code: diagnosis.code } : {}),
62
+ hypothesis: input.assessment?.hypothesis?.reason,
63
+ };
64
+ }
65
+ function diagnosisForHistoricalAttempt(attempt, gateResults, failedGates) {
66
+ if (failedGates.length === 0 &&
67
+ !attempt.error &&
68
+ !attempt.summary.runtime_permission_denied) {
69
+ return undefined;
70
+ }
71
+ return diagnoseDeliveryAttempt(attempt, gateResults);
72
+ }
73
+ function nextExperimentFromAssessment(assessment, strategiesById) {
74
+ const strategyId = assessment.next_strategy_id ?? assessment.hypothesis?.strategy_id;
75
+ if (!strategyId)
76
+ return undefined;
77
+ const strategy = strategiesById.get(strategyId);
78
+ if (!strategy)
79
+ return undefined;
80
+ return {
81
+ action: assessment.next_action,
82
+ strategy_id: strategy.id,
83
+ ...(strategy.command ? { command: strategy.command } : {}),
84
+ ...(assessment.hypothesis?.target
85
+ ? { target: assessment.hypothesis.target }
86
+ : strategy.adapter_path
87
+ ? { target: strategy.adapter_path }
88
+ : {}),
89
+ ...(strategy.verify_command
90
+ ? { verify_command: strategy.verify_command }
91
+ : {}),
92
+ disproof: disproofForAction(assessment.next_action),
93
+ };
94
+ }
95
+ function verificationStatusFromAssessment(assessment) {
96
+ switch (assessment.status) {
97
+ case "delivered":
98
+ return "verified";
99
+ case "blocked":
100
+ return "blocked";
101
+ case "exhausted":
102
+ return "exhausted";
103
+ case "ready":
104
+ case "needs_retry":
105
+ case "needs_repair":
106
+ case "inconclusive":
107
+ return "active";
108
+ }
109
+ }
110
+ function verificationStatusFromTrial(status) {
111
+ switch (status) {
112
+ case "delivered":
113
+ return "verified";
114
+ case "blocked":
115
+ return "blocked";
116
+ case "exhausted":
117
+ return "exhausted";
118
+ case "ready":
119
+ case "needs_retry":
120
+ case "needs_repair":
121
+ case "inconclusive":
122
+ return "active";
123
+ }
124
+ }
125
+ function trialStatus(attempt, failedGates) {
126
+ return attempt.summary.status === "completed" && failedGates.length === 0
127
+ ? "delivered"
128
+ : "inconclusive";
129
+ }
130
+ function classifyTrial(diagnosisCode, status) {
131
+ if (status === "delivered")
132
+ return "inconclusive";
133
+ switch (diagnosisCode) {
134
+ case "adapter_drift":
135
+ case "output_contract_mismatch":
136
+ case "evidence_gate_failed":
137
+ return "product_defect";
138
+ case "auth_required":
139
+ return "missing_context";
140
+ case "permission_denied":
141
+ return "user_or_policy_block";
142
+ case "transient_upstream":
143
+ return "upstream_or_environment";
144
+ case "strategy_exhausted":
145
+ case "unknown_failure":
146
+ default:
147
+ return "inconclusive";
148
+ }
149
+ }
150
+ function disproofForAction(action) {
151
+ switch (action) {
152
+ case "repair_adapter":
153
+ return "The next run still fails the same evidence gates or diagnosis.";
154
+ case "retry_strategy":
155
+ return "A repeated run still fails the same evidence gates.";
156
+ case "switch_strategy":
157
+ case "run_strategy":
158
+ return "The selected strategy cannot satisfy the objective evidence gates.";
159
+ case "request_auth":
160
+ case "request_permission":
161
+ case "inspect_failure":
162
+ case "stop":
163
+ return "No executable experiment is available from this assessment.";
164
+ }
165
+ }
166
+ //# sourceMappingURL=trajectory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trajectory.js","sourceRoot":"","sources":["../../../src/engine/delivery/trajectory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,157 @@
1
+ /**
2
+ * @owner src/engine/delivery/types.ts
3
+ * @does Defines objective-level delivery contracts: strategies, attempts, evidence gates, diagnoses, and next actions.
4
+ * @needs src/output/envelope.ts, src/engine/session/query.ts, src/engine/session/types.ts
5
+ * @feeds src/engine/delivery/planner.ts, src/engine/delivery/repair.ts, and future objective-level CLI orchestration.
6
+ * @breaks Misclassified status fields can make repairable, retryable, and blocked failures indistinguishable.
7
+ * @invariants repair candidates require both an adapter path and verification command.
8
+ * @side-effects none
9
+ * @perf type-only module.
10
+ * @concurrency type-only module.
11
+ * @test tests/unit/engine-delivery*.test.ts
12
+ * @stability experimental
13
+ * @since 2026-05-24
14
+ */
15
+ import type { AgentError } from "../../output/envelope.js";
16
+ import type { RunSummary } from "../session/query.js";
17
+ import type { RunEvent, RunId } from "../session/types.js";
18
+ export type DeliveryStrategyKind = "adapter" | "browser" | "desktop" | "local" | "mcp" | "manual";
19
+ export interface DeliveryStrategy {
20
+ id: string;
21
+ kind: DeliveryStrategyKind;
22
+ label: string;
23
+ priority: number;
24
+ enabled?: boolean;
25
+ command?: string;
26
+ args?: Record<string, unknown>;
27
+ adapter_path?: string;
28
+ verify_command?: string;
29
+ }
30
+ export interface DeliveryAttemptBudget {
31
+ max_attempts?: number;
32
+ max_attempts_per_strategy?: number;
33
+ }
34
+ export type DeliveryEvidenceGate = {
35
+ kind: "run_completed";
36
+ } | {
37
+ kind: "min_evidence_count";
38
+ min: number;
39
+ } | {
40
+ kind: "required_evidence_type";
41
+ evidence_type: string;
42
+ min?: number;
43
+ };
44
+ export interface DeliveryObjective {
45
+ id: string;
46
+ goal: string;
47
+ evidence_gates?: DeliveryEvidenceGate[];
48
+ attempt_budget?: DeliveryAttemptBudget;
49
+ }
50
+ export interface DeliveryAttempt {
51
+ id: string;
52
+ ordinal: number;
53
+ strategy_id: string;
54
+ run_id: RunId;
55
+ summary: RunSummary;
56
+ error?: AgentError;
57
+ }
58
+ export interface DeliveryGateResult {
59
+ name: string;
60
+ kind: DeliveryEvidenceGate["kind"];
61
+ passed: boolean;
62
+ expected: string | number;
63
+ actual: string | number;
64
+ }
65
+ export type DeliveryDiagnosisCode = "adapter_drift" | "auth_required" | "evidence_gate_failed" | "output_contract_mismatch" | "permission_denied" | "strategy_exhausted" | "transient_upstream" | "unknown_failure";
66
+ export interface DeliveryDiagnosis {
67
+ code: DeliveryDiagnosisCode;
68
+ reason: string;
69
+ repairable: boolean;
70
+ retryable: boolean;
71
+ adapter_path?: string;
72
+ step?: number;
73
+ suggestion?: string;
74
+ }
75
+ export type DeliveryStatus = "ready" | "delivered" | "needs_retry" | "needs_repair" | "blocked" | "exhausted" | "inconclusive";
76
+ export type DeliveryNextAction = "run_strategy" | "stop" | "retry_strategy" | "repair_adapter" | "switch_strategy" | "request_auth" | "request_permission" | "inspect_failure";
77
+ export interface DeliveryHypothesis {
78
+ id: string;
79
+ diagnosis_code: DeliveryDiagnosisCode;
80
+ action: DeliveryNextAction;
81
+ reason: string;
82
+ strategy_id?: string;
83
+ target?: string;
84
+ verify_command?: string;
85
+ }
86
+ export interface DeliveryAssessment {
87
+ objective_id: string;
88
+ status: DeliveryStatus;
89
+ next_action: DeliveryNextAction;
90
+ gates: DeliveryGateResult[];
91
+ current_attempt_id?: string;
92
+ current_strategy_id?: string;
93
+ next_strategy_id?: string;
94
+ diagnosis?: DeliveryDiagnosis;
95
+ hypothesis?: DeliveryHypothesis;
96
+ }
97
+ export interface DeliveryStateInput {
98
+ objective: DeliveryObjective;
99
+ strategies: DeliveryStrategy[];
100
+ attempts: DeliveryAttempt[];
101
+ }
102
+ export type DeliveryVerificationStatus = "unverified" | "active" | "verified" | "blocked" | "exhausted";
103
+ export type DeliveryFailureClassification = "product_defect" | "missing_context" | "user_or_policy_block" | "upstream_or_environment" | "inconclusive";
104
+ export interface DeliveryTrialRecord {
105
+ id: string;
106
+ ordinal: number;
107
+ run_id: RunId;
108
+ strategy_id: string;
109
+ status: DeliveryStatus;
110
+ verification_status: DeliveryVerificationStatus;
111
+ failed_gates: string[];
112
+ classification: DeliveryFailureClassification;
113
+ diagnosis_code?: DeliveryDiagnosisCode;
114
+ hypothesis?: string;
115
+ }
116
+ export interface DeliveryNextExperiment {
117
+ action: DeliveryNextAction;
118
+ strategy_id: string;
119
+ command?: string;
120
+ target?: string;
121
+ verify_command?: string;
122
+ disproof: string;
123
+ }
124
+ export interface DeliveryTrajectory {
125
+ schema_version: "1";
126
+ objective_id: string;
127
+ goal: string;
128
+ recorded_at: string;
129
+ verification_status: DeliveryVerificationStatus;
130
+ assessment: DeliveryAssessment;
131
+ trials: DeliveryTrialRecord[];
132
+ next_experiment?: DeliveryNextExperiment;
133
+ }
134
+ export interface DeliveryTrajectoryInput extends DeliveryStateInput {
135
+ recorded_at?: string;
136
+ }
137
+ export interface DeliveryAttemptFromRunEventsInput {
138
+ id: string;
139
+ ordinal: number;
140
+ strategy_id: string;
141
+ events: RunEvent[];
142
+ run_id?: RunId;
143
+ }
144
+ export interface DeliveryRepairCandidate {
145
+ schema_version: "1";
146
+ objective_id: string;
147
+ attempt_id: string;
148
+ strategy_id: string;
149
+ adapter_path: string;
150
+ verify_command: string;
151
+ diagnosis_code: DeliveryDiagnosisCode;
152
+ reason: string;
153
+ command?: string;
154
+ step?: number;
155
+ suggestion?: string;
156
+ }
157
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/engine/delivery/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE3D,MAAM,MAAM,oBAAoB,GAC5B,SAAS,GACT,SAAS,GACT,SAAS,GACT,OAAO,GACP,KAAK,GACL,QAAQ,CAAC;AAEb,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,oBAAoB,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yBAAyB,CAAC,EAAE,MAAM,CAAC;CACpC;AAED,MAAM,MAAM,oBAAoB,GAC5B;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,GACzB;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,wBAAwB,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5E,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACxC,cAAc,CAAC,EAAE,qBAAqB,CAAC;CACxC;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,KAAK,CAAC;IACd,OAAO,EAAE,UAAU,CAAC;IACpB,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,qBAAqB,GAC7B,eAAe,GACf,eAAe,GACf,sBAAsB,GACtB,0BAA0B,GAC1B,mBAAmB,GACnB,oBAAoB,GACpB,oBAAoB,GACpB,iBAAiB,CAAC;AAEtB,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,qBAAqB,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,cAAc,GACtB,OAAO,GACP,WAAW,GACX,aAAa,GACb,cAAc,GACd,SAAS,GACT,WAAW,GACX,cAAc,CAAC;AAEnB,MAAM,MAAM,kBAAkB,GAC1B,cAAc,GACd,MAAM,GACN,gBAAgB,GAChB,gBAAgB,GAChB,iBAAiB,GACjB,cAAc,GACd,oBAAoB,GACpB,iBAAiB,CAAC;AAEtB,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,qBAAqB,CAAC;IACtC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,cAAc,CAAC;IACvB,WAAW,EAAE,kBAAkB,CAAC;IAChC,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,UAAU,CAAC,EAAE,kBAAkB,CAAC;CACjC;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,iBAAiB,CAAC;IAC7B,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED,MAAM,MAAM,0BAA0B,GAClC,YAAY,GACZ,QAAQ,GACR,UAAU,GACV,SAAS,GACT,WAAW,CAAC;AAEhB,MAAM,MAAM,6BAA6B,GACrC,gBAAgB,GAChB,iBAAiB,GACjB,sBAAsB,GACtB,yBAAyB,GACzB,cAAc,CAAC;AAEnB,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,KAAK,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,cAAc,CAAC;IACvB,mBAAmB,EAAE,0BAA0B,CAAC;IAChD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,EAAE,6BAA6B,CAAC;IAC9C,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE,GAAG,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,0BAA0B,CAAC;IAChD,UAAU,EAAE,kBAAkB,CAAC;IAC/B,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,eAAe,CAAC,EAAE,sBAAsB,CAAC;CAC1C;AAED,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IACjE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iCAAiC;IAChD,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,KAAK,CAAC;CAChB;AAED,MAAM,WAAW,uBAAuB;IACtC,cAAc,EAAE,GAAG,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,qBAAqB,CAAC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @owner src/engine/delivery/types.ts
3
+ * @does Defines objective-level delivery contracts: strategies, attempts, evidence gates, diagnoses, and next actions.
4
+ * @needs src/output/envelope.ts, src/engine/session/query.ts, src/engine/session/types.ts
5
+ * @feeds src/engine/delivery/planner.ts, src/engine/delivery/repair.ts, and future objective-level CLI orchestration.
6
+ * @breaks Misclassified status fields can make repairable, retryable, and blocked failures indistinguishable.
7
+ * @invariants repair candidates require both an adapter path and verification command.
8
+ * @side-effects none
9
+ * @perf type-only module.
10
+ * @concurrency type-only module.
11
+ * @test tests/unit/engine-delivery*.test.ts
12
+ * @stability experimental
13
+ * @since 2026-05-24
14
+ */
15
+ export {};
16
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/engine/delivery/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG"}
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.222.0",
2
+ "version": "0.222.1",
3
3
  "sites": {
4
4
  "1688": {
5
5
  "commands": [
@@ -20732,7 +20732,7 @@
20732
20732
  "type": "web-api",
20733
20733
  "domain": "www.instagram.com",
20734
20734
  "browser": false,
20735
- "quarantined": false,
20735
+ "quarantined": true,
20736
20736
  "args": [
20737
20737
  {
20738
20738
  "name": "limit",
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @owner src/output/error-writer.ts
3
+ * @does Centralizes process-level emission of structured AgentEnvelope errors.
4
+ * @needs src/output/formatter.ts, src/output/envelope.ts, src/types.ts
5
+ * @feeds command modules that need stderr error envelopes with explicit exit codes.
6
+ * @breaks Writing errors to stdout pollutes agent data streams and violates the CLI contract.
7
+ * @invariants error envelopes always go to stderr; process.exitCode is set before emission.
8
+ * @side-effects writes to stderr and sets process.exitCode.
9
+ * @perf O(serialized envelope size).
10
+ * @concurrency process-global exitCode and stderr make this CLI-process scoped.
11
+ * @test tests/unit/delivery-cli.test.ts, tests/unit/session-runs-command.test.ts, tests/unit/commands/extract.test.ts
12
+ * @stability experimental
13
+ * @since 2026-05-24
14
+ */
15
+ import type { AgentContext } from "./envelope.js";
16
+ import type { OutputFormat } from "../types.js";
17
+ export declare function printErrorEnvelope(input: {
18
+ columns?: string[];
19
+ fmt: OutputFormat;
20
+ ctx: AgentContext;
21
+ exitCode: number;
22
+ }): void;
23
+ //# sourceMappingURL=error-writer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-writer.d.ts","sourceRoot":"","sources":["../../src/output/error-writer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,GAAG,EAAE,YAAY,CAAC;IAClB,GAAG,EAAE,YAAY,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,IAAI,CAGP"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @owner src/output/error-writer.ts
3
+ * @does Centralizes process-level emission of structured AgentEnvelope errors.
4
+ * @needs src/output/formatter.ts, src/output/envelope.ts, src/types.ts
5
+ * @feeds command modules that need stderr error envelopes with explicit exit codes.
6
+ * @breaks Writing errors to stdout pollutes agent data streams and violates the CLI contract.
7
+ * @invariants error envelopes always go to stderr; process.exitCode is set before emission.
8
+ * @side-effects writes to stderr and sets process.exitCode.
9
+ * @perf O(serialized envelope size).
10
+ * @concurrency process-global exitCode and stderr make this CLI-process scoped.
11
+ * @test tests/unit/delivery-cli.test.ts, tests/unit/session-runs-command.test.ts, tests/unit/commands/extract.test.ts
12
+ * @stability experimental
13
+ * @since 2026-05-24
14
+ */
15
+ import { format } from "./formatter.js";
16
+ export function printErrorEnvelope(input) {
17
+ process.exitCode = input.exitCode;
18
+ console.error(format(null, input.columns, input.fmt, input.ctx));
19
+ }
20
+ //# sourceMappingURL=error-writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-writer.js","sourceRoot":"","sources":["../../src/output/error-writer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAGxC,MAAM,UAAU,kBAAkB,CAAC,KAKlC;IACC,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAClC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACnE,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@zenalexa/unicli",
3
- "version": "0.222.0",
4
- "description": "Agent execution substrate for web, apps, local tools, and system capabilities. Self-repairing CLI catalog with stdio + Streamable HTTP MCP server.",
3
+ "version": "0.222.1",
4
+ "description": "Operations substrate for agents that use real software: web, browsers, desktop apps, local tools, MCP, policy, evidence, and self-repair.",
5
5
  "packageManager": "npm@11.14.0",
6
6
  "type": "module",
7
7
  "main": "dist/main.js",
package/server.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json",
3
3
  "name": "io.github.olo-dot-io/Uni-CLI",
4
4
  "description": "Self-repairing CLI catalog that exposes 282 websites, desktop apps, and external CLIs as one MCP server. 949 declarative YAML adapters and 1686 commands; structured error envelopes let agents fix failing adapters at runtime and retry.",
5
- "version": "0.222.0",
5
+ "version": "0.222.1",
6
6
  "repository": {
7
7
  "url": "https://github.com/olo-dot-io/Uni-CLI",
8
8
  "source": "github"
@@ -13,7 +13,7 @@
13
13
  "registryType": "npm",
14
14
  "registryBaseUrl": "https://registry.npmjs.org",
15
15
  "identifier": "@zenalexa/unicli",
16
- "version": "0.222.0",
16
+ "version": "0.222.1",
17
17
  "transport": {
18
18
  "type": "stdio"
19
19
  },
@@ -11,7 +11,7 @@ description: >
11
11
  major platform; run desktop workflows or system tasks; or when the user says
12
12
  "unicli", "scrape", "fetch from", "get trending", "check [site]", "find on
13
13
  [platform]", "获取", "查询", "抓取".
14
- version: 0.222.0
14
+ version: 0.222.1
15
15
  category: core
16
16
  depends-on:
17
17
  - talk-normal
@@ -6,7 +6,7 @@ description: >
6
6
  newlines, or inline JSON — shell-quoted invocations hit TC0 circuit
7
7
  limits and drop to <50% success above ICS=4. Also covers --describe
8
8
  introspection and next_actions-driven navigation.
9
- version: 0.222.0
9
+ version: 0.222.1
10
10
  depends-on:
11
11
  - talk-normal
12
12
  triggers:
@@ -4,7 +4,7 @@ description: >
4
4
  Use Uni-CLI to interact with 237 websites, desktop apps, and system tools.
5
5
  Trigger when: user asks to check a website, fetch data, control a desktop app,
6
6
  or interact with social media, news, finance, or AI platforms.
7
- version: 0.222.0
7
+ version: 0.222.1
8
8
  depends-on:
9
9
  - talk-normal
10
10
  triggers:
@@ -13,13 +13,10 @@ args:
13
13
 
14
14
  pipeline:
15
15
  - fetch:
16
- url: https://www.instagram.com/api/v1/clips/trending/
17
- method: POST
18
- body:
19
- max_id: ""
20
- page_size: "${{ args.limit }}"
16
+ url: https://www.instagram.com/api/v1/clips/discover/
21
17
  headers:
22
- X-CSRFToken: "${{ cookies.csrftoken }}"
18
+ X-IG-App-ID: "936619743392459"
19
+ User-Agent: "Instagram 219.0.0.12.117 Android"
23
20
 
24
21
  - select: items
25
22
 
@@ -38,5 +35,6 @@ capabilities: ["http.fetch"]
38
35
  minimum_capability: http.fetch
39
36
  trust: public
40
37
  confidentiality: public
41
- quarantine: false
38
+ quarantine: true
39
+ quarantineReason: "2026-05-24: Instagram retired /api/v1/clips/trending/; /api/v1/clips/discover/ requires live authenticated browser validation before this web-api route can be trusted."
42
40
  schema_version: v2
@@ -14,7 +14,7 @@ args:
14
14
 
15
15
  pipeline:
16
16
  - fetch:
17
- url: https://weread.qq.com/web/shelf/sync
17
+ url: https://i.weread.qq.com/shelf/sync
18
18
  method: POST
19
19
  headers:
20
20
  Content-Type: application/json