@senpi/runtime 3.0.58 → 3.0.62
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/README.md +73 -2
- package/dist/actions/action-events.d.ts +3 -3
- package/dist/actions/action-events.d.ts.map +1 -1
- package/dist/actions/action-events.js +24 -16
- package/dist/actions/action-events.js.map +1 -1
- package/dist/actions/action-runtime-module.d.ts.map +1 -1
- package/dist/actions/action-runtime-module.js +18 -1
- package/dist/actions/action-runtime-module.js.map +1 -1
- package/dist/actions/close-position/close-position.action.d.ts.map +1 -1
- package/dist/actions/close-position/close-position.action.js +84 -11
- package/dist/actions/close-position/close-position.action.js.map +1 -1
- package/dist/actions/decision-engine.d.ts +0 -2
- package/dist/actions/decision-engine.d.ts.map +1 -1
- package/dist/actions/decision-engine.js +1 -79
- package/dist/actions/decision-engine.js.map +1 -1
- package/dist/actions/event-derivation.d.ts +40 -2
- package/dist/actions/event-derivation.d.ts.map +1 -1
- package/dist/actions/event-derivation.js +178 -5
- package/dist/actions/event-derivation.js.map +1 -1
- package/dist/actions/open-position/open-position.action.d.ts.map +1 -1
- package/dist/actions/open-position/open-position.action.js +103 -16
- package/dist/actions/open-position/open-position.action.js.map +1 -1
- package/dist/actions/position-tracker/position-tracker.action.d.ts +2 -1
- package/dist/actions/position-tracker/position-tracker.action.d.ts.map +1 -1
- package/dist/actions/position-tracker/position-tracker.action.js +47 -15
- package/dist/actions/position-tracker/position-tracker.action.js.map +1 -1
- package/dist/actions/skipped-signal-results.d.ts +16 -0
- package/dist/actions/skipped-signal-results.d.ts.map +1 -0
- package/dist/actions/skipped-signal-results.js +47 -0
- package/dist/actions/skipped-signal-results.js.map +1 -0
- package/dist/cli/deploy-render.d.ts +91 -0
- package/dist/cli/deploy-render.d.ts.map +1 -0
- package/dist/cli/deploy-render.js +216 -0
- package/dist/cli/deploy-render.js.map +1 -0
- package/dist/cli/guide-commands.d.ts.map +1 -1
- package/dist/cli/guide-commands.js +78 -6
- package/dist/cli/guide-commands.js.map +1 -1
- package/dist/cli/senpi-commands.d.ts +6 -1
- package/dist/cli/senpi-commands.d.ts.map +1 -1
- package/dist/cli/senpi-commands.js +164 -5
- package/dist/cli/senpi-commands.js.map +1 -1
- package/dist/cli/validate-command.d.ts.map +1 -1
- package/dist/cli/validate-command.js +32 -1
- package/dist/cli/validate-command.js.map +1 -1
- package/dist/deploy/deadlines.d.ts +47 -0
- package/dist/deploy/deadlines.d.ts.map +1 -0
- package/dist/deploy/deadlines.js +56 -0
- package/dist/deploy/deadlines.js.map +1 -0
- package/dist/deploy/error-text.d.ts +25 -0
- package/dist/deploy/error-text.d.ts.map +1 -0
- package/dist/deploy/error-text.js +42 -0
- package/dist/deploy/error-text.js.map +1 -0
- package/dist/deploy/funding.d.ts +87 -0
- package/dist/deploy/funding.d.ts.map +1 -0
- package/dist/deploy/funding.js +229 -0
- package/dist/deploy/funding.js.map +1 -0
- package/dist/deploy/install-gate-runner.d.ts +12 -0
- package/dist/deploy/install-gate-runner.d.ts.map +1 -0
- package/dist/deploy/install-gate-runner.js +17 -0
- package/dist/deploy/install-gate-runner.js.map +1 -0
- package/dist/deploy/job.d.ts +199 -0
- package/dist/deploy/job.d.ts.map +1 -0
- package/dist/deploy/job.js +463 -0
- package/dist/deploy/job.js.map +1 -0
- package/dist/deploy/min-budget.d.ts +68 -0
- package/dist/deploy/min-budget.d.ts.map +1 -0
- package/dist/deploy/min-budget.js +297 -0
- package/dist/deploy/min-budget.js.map +1 -0
- package/dist/deploy/orchestrator.d.ts +305 -0
- package/dist/deploy/orchestrator.d.ts.map +1 -0
- package/dist/deploy/orchestrator.js +2910 -0
- package/dist/deploy/orchestrator.js.map +1 -0
- package/dist/deploy/package.d.ts +130 -0
- package/dist/deploy/package.d.ts.map +1 -0
- package/dist/deploy/package.js +351 -0
- package/dist/deploy/package.js.map +1 -0
- package/dist/deploy/proof-gate.d.ts +82 -0
- package/dist/deploy/proof-gate.d.ts.map +1 -0
- package/dist/deploy/proof-gate.js +269 -0
- package/dist/deploy/proof-gate.js.map +1 -0
- package/dist/deploy/python-float.d.ts +34 -0
- package/dist/deploy/python-float.d.ts.map +1 -0
- package/dist/deploy/python-float.js +46 -0
- package/dist/deploy/python-float.js.map +1 -0
- package/dist/deploy/recheck-commands.d.ts +50 -0
- package/dist/deploy/recheck-commands.d.ts.map +1 -0
- package/dist/deploy/recheck-commands.js +59 -0
- package/dist/deploy/recheck-commands.js.map +1 -0
- package/dist/deploy/register.d.ts +99 -0
- package/dist/deploy/register.d.ts.map +1 -0
- package/dist/deploy/register.js +689 -0
- package/dist/deploy/register.js.map +1 -0
- package/dist/deploy/taxonomy.d.ts +24 -0
- package/dist/deploy/taxonomy.d.ts.map +1 -0
- package/dist/deploy/taxonomy.js +31 -0
- package/dist/deploy/taxonomy.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +244 -132
- package/dist/index.js.map +1 -1
- package/dist/runtime/lifecycle-events.d.ts +13 -0
- package/dist/runtime/lifecycle-events.d.ts.map +1 -1
- package/dist/runtime/lifecycle-events.js +32 -0
- package/dist/runtime/lifecycle-events.js.map +1 -1
- package/dist/runtime/runtime.d.ts.map +1 -1
- package/dist/runtime/runtime.js +3 -1
- package/dist/runtime/runtime.js.map +1 -1
- package/dist/runtime/strategy-registry.d.ts +8 -0
- package/dist/runtime/strategy-registry.d.ts.map +1 -1
- package/dist/runtime/strategy-registry.js +14 -1
- package/dist/runtime/strategy-registry.js.map +1 -1
- package/dist/runtime/supervisor/long-running-supervisor.d.ts +8 -0
- package/dist/runtime/supervisor/long-running-supervisor.d.ts.map +1 -1
- package/dist/runtime/supervisor/long-running-supervisor.js +1 -0
- package/dist/runtime/supervisor/long-running-supervisor.js.map +1 -1
- package/dist/runtime-api/intake/intake-events.d.ts +19 -3
- package/dist/runtime-api/intake/intake-events.d.ts.map +1 -1
- package/dist/runtime-api/intake/intake-events.js +64 -2
- package/dist/runtime-api/intake/intake-events.js.map +1 -1
- package/dist/runtime-api/intake/intake-mount.d.ts.map +1 -1
- package/dist/runtime-api/intake/intake-mount.js +7 -4
- package/dist/runtime-api/intake/intake-mount.js.map +1 -1
- package/dist/runtime-api/intake/process-signal-post.d.ts.map +1 -1
- package/dist/runtime-api/intake/process-signal-post.js +7 -1
- package/dist/runtime-api/intake/process-signal-post.js.map +1 -1
- package/dist/runtime-api/intake/scanner-launcher.d.ts.map +1 -1
- package/dist/runtime-api/intake/scanner-launcher.js +12 -0
- package/dist/runtime-api/intake/scanner-launcher.js.map +1 -1
- package/dist/runtime-api/intake/types.d.ts +24 -0
- package/dist/runtime-api/intake/types.d.ts.map +1 -1
- package/dist/runtime-api/routes/signals.d.ts.map +1 -1
- package/dist/runtime-api/routes/signals.js +10 -1
- package/dist/runtime-api/routes/signals.js.map +1 -1
- package/dist/runtime-api/routes/signals.schema.d.ts +10 -0
- package/dist/runtime-api/routes/signals.schema.d.ts.map +1 -1
- package/dist/runtime-api/routes/signals.schema.js +14 -0
- package/dist/runtime-api/routes/signals.schema.js.map +1 -1
- package/dist/scanners/events.d.ts +7 -0
- package/dist/scanners/events.d.ts.map +1 -1
- package/dist/scanners/events.js.map +1 -1
- package/dist/scanners/external/scaffold/delivery.py +23 -12
- package/dist/scanners/external/scaffold/scaffold.py +55 -7
- package/dist/scanners/implementations/market-regime.d.ts +1 -1
- package/dist/scanners/runtime-module.d.ts.map +1 -1
- package/dist/scanners/runtime-module.js +10 -2
- package/dist/scanners/runtime-module.js.map +1 -1
- package/dist/senpi/client.d.ts +58 -4
- package/dist/senpi/client.d.ts.map +1 -1
- package/dist/senpi/client.js +192 -15
- package/dist/senpi/client.js.map +1 -1
- package/dist/senpi/strategy-status.d.ts +32 -0
- package/dist/senpi/strategy-status.d.ts.map +1 -0
- package/dist/senpi/strategy-status.js +70 -0
- package/dist/senpi/strategy-status.js.map +1 -0
- package/dist/senpi/types.d.ts +47 -3
- package/dist/senpi/types.d.ts.map +1 -1
- package/dist/skills-manager/manifest.js +1 -1
- package/dist/skills-manager/skills-manifest.json +1 -1
- package/dist/telemetry/event-builders.d.ts +45 -6
- package/dist/telemetry/event-builders.d.ts.map +1 -1
- package/dist/telemetry/event-builders.js +99 -11
- package/dist/telemetry/event-builders.js.map +1 -1
- package/dist/telemetry/metrics.d.ts +37 -2
- package/dist/telemetry/metrics.d.ts.map +1 -1
- package/dist/telemetry/metrics.js +84 -4
- package/dist/telemetry/metrics.js.map +1 -1
- package/dist/telemetry/scanner-tick-event.d.ts +32 -0
- package/dist/telemetry/scanner-tick-event.d.ts.map +1 -0
- package/dist/telemetry/scanner-tick-event.js +32 -0
- package/dist/telemetry/scanner-tick-event.js.map +1 -0
- package/dist/types/strategy.d.ts +9 -1
- package/dist/types/strategy.d.ts.map +1 -1
- package/dist/universe/package-universe.d.ts +97 -0
- package/dist/universe/package-universe.d.ts.map +1 -0
- package/dist/universe/package-universe.js +275 -0
- package/dist/universe/package-universe.js.map +1 -0
- package/dist/utils/event-catalog.d.ts +58 -0
- package/dist/utils/event-catalog.d.ts.map +1 -1
- package/dist/utils/event-catalog.js +1 -0
- package/dist/utils/event-catalog.js.map +1 -1
- package/dist/validate/codes.d.ts +20 -0
- package/dist/validate/codes.d.ts.map +1 -1
- package/dist/validate/codes.js +36 -0
- package/dist/validate/codes.js.map +1 -1
- package/dist/validate/import-stage.js +5 -5
- package/dist/validate/import-stage.js.map +1 -1
- package/dist/validate/index.d.ts +1 -1
- package/dist/validate/index.d.ts.map +1 -1
- package/dist/validate/index.js.map +1 -1
- package/dist/validate/install-gate.d.ts.map +1 -1
- package/dist/validate/install-gate.js +10 -2
- package/dist/validate/install-gate.js.map +1 -1
- package/dist/validate/live-instruments.d.ts +44 -0
- package/dist/validate/live-instruments.d.ts.map +1 -0
- package/dist/validate/live-instruments.js +71 -0
- package/dist/validate/live-instruments.js.map +1 -0
- package/dist/validate/live-stage.js +5 -5
- package/dist/validate/live-stage.js.map +1 -1
- package/dist/validate/proof.d.ts +11 -1
- package/dist/validate/proof.d.ts.map +1 -1
- package/dist/validate/proof.js +7 -6
- package/dist/validate/proof.js.map +1 -1
- package/dist/validate/recipe-checks.d.ts.map +1 -1
- package/dist/validate/recipe-checks.js +6 -4
- package/dist/validate/recipe-checks.js.map +1 -1
- package/dist/validate/run.d.ts +5 -0
- package/dist/validate/run.d.ts.map +1 -1
- package/dist/validate/run.js +10 -1
- package/dist/validate/run.js.map +1 -1
- package/dist/validate/target.d.ts +41 -0
- package/dist/validate/target.d.ts.map +1 -1
- package/dist/validate/target.js +192 -16
- package/dist/validate/target.js.map +1 -1
- package/dist/validate/universe-stage.d.ts +71 -0
- package/dist/validate/universe-stage.d.ts.map +1 -0
- package/dist/validate/universe-stage.js +183 -0
- package/dist/validate/universe-stage.js.map +1 -0
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
- package/dist/runtime/managed-wallet-guard.d.ts +0 -47
- package/dist/runtime/managed-wallet-guard.d.ts.map +0 -1
- package/dist/runtime/managed-wallet-guard.js +0 -106
- package/dist/runtime/managed-wallet-guard.js.map +0 -1
- package/dist/runtime/protection-nudge.d.ts +0 -67
- package/dist/runtime/protection-nudge.d.ts.map +0 -1
- package/dist/runtime/protection-nudge.js +0 -244
- package/dist/runtime/protection-nudge.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skipped-signal-results.js","sourceRoot":"","sources":["../../src/actions/skipped-signal-results.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAAuC,EACvC,MAAc,EACd,KAAa,EACb,SAAiD;IAEjD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IACvC,MAAM,IAAI,GAAmC,EAAE,CAAC;IAChD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,SAAS;QACtD,MAAM,MAAM,GAAG,GAA8B,CAAC;QAC9C,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC;QAC9B,iFAAiF;QACjF,MAAM,KAAK,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7G,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,SAAS;QAClC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC3B,6FAA6F;QAC7F,yFAAyF;QACzF,8FAA8F;QAC9F,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAE,IAAgC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9G,MAAM,GAAG,GAAG,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;QAC9F,IAAI,CAAC,IAAI,CAAC;YACR,KAAK;YACL,GAAG,CAAC,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,GAAG,EAAE,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM;YACvE,GAAG,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzE,OAAO,EAAE,SAAS,EAAE,OAAO,IAAI,IAAI;YACnC,MAAM;YACN,GAAG,CAAC,SAAS,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrE,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
export interface DeployStepLike {
|
|
2
|
+
status: string;
|
|
3
|
+
detail: string;
|
|
4
|
+
evidence?: Record<string, unknown>;
|
|
5
|
+
}
|
|
6
|
+
export interface DeployInstanceLike {
|
|
7
|
+
instance: string;
|
|
8
|
+
wallet?: string;
|
|
9
|
+
strategyId?: string;
|
|
10
|
+
funded?: number;
|
|
11
|
+
runtimeId?: string;
|
|
12
|
+
/** D-6: this job created the wallet, its install failed, and the close+refund completed. */
|
|
13
|
+
rolledBack?: boolean;
|
|
14
|
+
steps: Record<string, DeployStepLike>;
|
|
15
|
+
}
|
|
16
|
+
export interface DeployReportLike {
|
|
17
|
+
packageId: string;
|
|
18
|
+
version: string;
|
|
19
|
+
overall: string;
|
|
20
|
+
instances: DeployInstanceLike[];
|
|
21
|
+
next?: string;
|
|
22
|
+
/** The SOFT calculated-minimum tier — advisory, and never part of `overall`. */
|
|
23
|
+
minBudget?: number;
|
|
24
|
+
minWalletCount?: number;
|
|
25
|
+
belowMin?: boolean;
|
|
26
|
+
minBudgetNote?: string;
|
|
27
|
+
minBudgetUnresolved?: string[];
|
|
28
|
+
/** The OUTCOME tier — the backend funded a wallet short of the ask. Advisory, like the above. */
|
|
29
|
+
partialFundNote?: string;
|
|
30
|
+
/** The OUTCOME tier's other half — the backend reported no readable funded amount. Advisory. */
|
|
31
|
+
fundedUnreadableNote?: string;
|
|
32
|
+
}
|
|
33
|
+
export interface DeployEventLike {
|
|
34
|
+
seq: number;
|
|
35
|
+
ts: string;
|
|
36
|
+
type: string;
|
|
37
|
+
phase?: string;
|
|
38
|
+
instance?: string;
|
|
39
|
+
step?: string;
|
|
40
|
+
status?: string;
|
|
41
|
+
detail: string;
|
|
42
|
+
}
|
|
43
|
+
export interface DeployLiveLayerLike {
|
|
44
|
+
strategies: Array<{
|
|
45
|
+
strategyName: string;
|
|
46
|
+
status: string;
|
|
47
|
+
strategyWalletAddress: string;
|
|
48
|
+
totalFunded?: number;
|
|
49
|
+
}>;
|
|
50
|
+
runtimes: Array<{
|
|
51
|
+
id: string;
|
|
52
|
+
wallet?: string;
|
|
53
|
+
}>;
|
|
54
|
+
unavailable?: string;
|
|
55
|
+
}
|
|
56
|
+
export interface DeploySnapshotLike {
|
|
57
|
+
meta: {
|
|
58
|
+
deployId: string;
|
|
59
|
+
packageId: string;
|
|
60
|
+
version: string;
|
|
61
|
+
packageDir: string;
|
|
62
|
+
budget?: number;
|
|
63
|
+
startedAt: string;
|
|
64
|
+
};
|
|
65
|
+
state: {
|
|
66
|
+
status: "running";
|
|
67
|
+
phase: string;
|
|
68
|
+
stopRequested: boolean;
|
|
69
|
+
} | {
|
|
70
|
+
status: "done";
|
|
71
|
+
overall: string;
|
|
72
|
+
} | {
|
|
73
|
+
status: "interrupted";
|
|
74
|
+
};
|
|
75
|
+
events?: DeployEventLike[];
|
|
76
|
+
report?: DeployReportLike;
|
|
77
|
+
live?: DeployLiveLayerLike;
|
|
78
|
+
next?: string;
|
|
79
|
+
}
|
|
80
|
+
export declare function renderHeader(snap: DeploySnapshotLike, now: number): string;
|
|
81
|
+
export declare function renderStepTable(report: DeployReportLike): string[];
|
|
82
|
+
export declare function renderEventsTail(events: DeployEventLike[]): string[];
|
|
83
|
+
export declare function renderReportFooter(report: DeployReportLike): string[];
|
|
84
|
+
/** Fresh-read layer, printed beside (never instead of) the journal narration. */
|
|
85
|
+
export declare function renderLiveLayer(live: DeployLiveLayerLike): string[];
|
|
86
|
+
export declare function renderDeploySnapshotLines(snap: DeploySnapshotLike, now?: number): string[];
|
|
87
|
+
/** The ONE place the D-12 map lives; the status action calls it. */
|
|
88
|
+
export declare function exitCodeForDeploy(snap: DeploySnapshotLike): number;
|
|
89
|
+
/** CLI entry point: print the snapshot rendering. */
|
|
90
|
+
export declare function renderDeploySnapshot(snap: DeploySnapshotLike, now?: number): void;
|
|
91
|
+
//# sourceMappingURL=deploy-render.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy-render.d.ts","sourceRoot":"","sources":["../../src/cli/deploy-render.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure renderer for `senpi deploy status`.
|
|
3
|
+
*
|
|
4
|
+
* Every number and lifecycle claim printed here is quoted from the surface that
|
|
5
|
+
* proves it — the report's `funded` (backend `totalFunded`), the scanner row's
|
|
6
|
+
* fields, the install payload — never re-derived in prose and never reformatted.
|
|
7
|
+
* A running phase renders as an in-progress fact, never as an achievement, and
|
|
8
|
+
* an unobserved tick renders as `unobserved` with the check-later command.
|
|
9
|
+
*
|
|
10
|
+
* Kept free of I/O so it unit-tests without the gateway spawn mock. It borrows exactly one thing
|
|
11
|
+
* from the deploy module — `usd()`, so money reads the same here as in the notes this prints beside
|
|
12
|
+
* — and nothing else: the report types below are structural mirrors, deliberately not imports, so
|
|
13
|
+
* the renderer stays decoupled from the orchestrator's shapes.
|
|
14
|
+
*/
|
|
15
|
+
import { usd } from "../deploy/funding.js";
|
|
16
|
+
const STEP_ORDER = ["reconcile", "preflight", "create", "install", "observe"];
|
|
17
|
+
const EVENT_TAIL = 6;
|
|
18
|
+
/** Human phrase for a job state — running phases stay in-progress, never triumphant. */
|
|
19
|
+
function renderState(state) {
|
|
20
|
+
switch (state.status) {
|
|
21
|
+
case "running":
|
|
22
|
+
return state.stopRequested
|
|
23
|
+
? `running (phase: ${state.phase}; deploy deadline reached — stopping at the next step boundary)`
|
|
24
|
+
: `running (phase: ${state.phase})`;
|
|
25
|
+
case "done":
|
|
26
|
+
return `done — ${state.overall}`;
|
|
27
|
+
case "interrupted":
|
|
28
|
+
return "interrupted by a gateway restart (no deploy is running now)";
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function elapsedSeconds(startedAt, now) {
|
|
32
|
+
const started = Date.parse(startedAt);
|
|
33
|
+
if (Number.isNaN(started))
|
|
34
|
+
return null;
|
|
35
|
+
return Math.max(0, Math.round((now - started) / 1000));
|
|
36
|
+
}
|
|
37
|
+
export function renderHeader(snap, now) {
|
|
38
|
+
const elapsed = elapsedSeconds(snap.meta.startedAt, now);
|
|
39
|
+
const elapsedPart = elapsed === null ? "" : `, elapsed ${elapsed}s`;
|
|
40
|
+
return (`deploy ${snap.meta.deployId} — ${renderState(snap.state)} — package ` +
|
|
41
|
+
`${snap.meta.packageId} v${snap.meta.version}${elapsedPart}`);
|
|
42
|
+
}
|
|
43
|
+
/** `k=v` pairs straight from the evidence object — no rounding, no currency formatting. */
|
|
44
|
+
function renderEvidence(evidence) {
|
|
45
|
+
return Object.entries(evidence)
|
|
46
|
+
.map(([key, value]) => `${key}=${typeof value === "string" ? value : JSON.stringify(value)}`)
|
|
47
|
+
.join(" ");
|
|
48
|
+
}
|
|
49
|
+
export function renderStepTable(report) {
|
|
50
|
+
const lines = [];
|
|
51
|
+
for (const instance of report.instances) {
|
|
52
|
+
// A rolled-back wallet is closed and its funds are back with the owner — rendering it as
|
|
53
|
+
// `funded N` here would be the same fail-open as calling an unobserved tick `live`. An
|
|
54
|
+
// INCOMPLETE rollback deliberately keeps the funded figure: there the money really is stranded.
|
|
55
|
+
const facts = [
|
|
56
|
+
instance.wallet ? `wallet ${instance.wallet}` : null,
|
|
57
|
+
instance.strategyId ? `strategyId ${instance.strategyId}` : null,
|
|
58
|
+
instance.rolledBack
|
|
59
|
+
? "ROLLED BACK — strategy closed, funds returned"
|
|
60
|
+
: instance.funded !== undefined
|
|
61
|
+
? `funded ${instance.funded}`
|
|
62
|
+
: null,
|
|
63
|
+
// A runtime id survives a FAILED install (a blind runtime records its id as a fact), and the
|
|
64
|
+
// facts line is the skim line agents quote. Bare, it relays as "the runtime is installed" —
|
|
65
|
+
// the exact opposite of what the install step two lines below says.
|
|
66
|
+
instance.runtimeId
|
|
67
|
+
? instance.steps.install?.status === "failed"
|
|
68
|
+
? `runtime ${instance.runtimeId} (install FAILED — not watching this wallet)`
|
|
69
|
+
: `runtime ${instance.runtimeId}`
|
|
70
|
+
: null,
|
|
71
|
+
].filter((fact) => fact !== null);
|
|
72
|
+
lines.push(` instance ${instance.instance}${facts.length > 0 ? ` — ${facts.join(", ")}` : ""}`);
|
|
73
|
+
for (const step of STEP_ORDER) {
|
|
74
|
+
const outcome = instance.steps[step];
|
|
75
|
+
if (!outcome)
|
|
76
|
+
continue;
|
|
77
|
+
lines.push(` ${step.padEnd(9)} ${outcome.status.padEnd(11)} ${outcome.detail}`);
|
|
78
|
+
if (outcome.evidence && Object.keys(outcome.evidence).length > 0) {
|
|
79
|
+
lines.push(` evidence: ${renderEvidence(outcome.evidence)}`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return lines;
|
|
84
|
+
}
|
|
85
|
+
export function renderEventsTail(events) {
|
|
86
|
+
if (events.length === 0)
|
|
87
|
+
return [];
|
|
88
|
+
return [" recent events:", ...events.slice(-EVENT_TAIL).map((event) => ` ${event.ts} ${event.detail}`)];
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* The SOFT calculated-minimum tier, rendered beside the overall — never folded INTO it.
|
|
92
|
+
*
|
|
93
|
+
* A deploy that ran below the package's calculated minimum is still `live`: the minimum is a local
|
|
94
|
+
* estimate over the package's own YAML, not a platform rule, and the deploy proceeded. So the
|
|
95
|
+
* figure prints as its own fact and the note prints under an explicit `warn:` label, which is what
|
|
96
|
+
* keeps a reader (agent or human) from reading its `[E_…]` code as a refusal.
|
|
97
|
+
*
|
|
98
|
+
* The figure renders through the same `usd()` every note in the deploy module uses. It is NOT in
|
|
99
|
+
* the "quote it exactly as carried" class that `funded` and the scanner fields are in: those are
|
|
100
|
+
* backend-quoted facts that must never be re-derived, whereas this one is computed locally two
|
|
101
|
+
* modules away. `SKILL.md` tells the agent to quote the report's numbers verbatim, so a bare `125`
|
|
102
|
+
* is what would reach the user.
|
|
103
|
+
*
|
|
104
|
+
* The two qualifiers COMPOSE rather than compete. `belowMin` and an unresolved sleeve can hold at
|
|
105
|
+
* once, and this line is what a skimming reader takes away, so dropping either half would
|
|
106
|
+
* understate the situation.
|
|
107
|
+
*
|
|
108
|
+
* `belowMin` renders as a statement about a WALLET, never about the budget versus this total. The
|
|
109
|
+
* two are different claims — a partially-adopted deploy splits the budget among fewer wallets — and
|
|
110
|
+
* "the requested budget is BELOW it" is not merely weaker but false where they diverge: a declared
|
|
111
|
+
* `funding_share: 0` sleeve is floored at MIN_WALLET at every budget, so `belowMin` holds while the
|
|
112
|
+
* budget may be far above the total.
|
|
113
|
+
*/
|
|
114
|
+
function renderSoftBudgetTier(report) {
|
|
115
|
+
const lines = [];
|
|
116
|
+
if (report.minBudget !== undefined) {
|
|
117
|
+
const unresolved = report.minBudgetUnresolved ?? [];
|
|
118
|
+
const parts = [];
|
|
119
|
+
if (unresolved.length > 0)
|
|
120
|
+
parts.push(`UNRESOLVED for ${unresolved.join(", ")}`);
|
|
121
|
+
if (report.belowMin) {
|
|
122
|
+
parts.push(`${unresolved.length > 0 ? "and " : ""}a wallet in this deploy is sized below its own minimum`);
|
|
123
|
+
}
|
|
124
|
+
const qualifier = parts.length > 0 ? ` — ${parts.join(", ")}` : "";
|
|
125
|
+
lines.push(` calculated minimum: ${usd(report.minBudget)} across ${report.minWalletCount} wallet(s)${qualifier}`);
|
|
126
|
+
}
|
|
127
|
+
if (report.minBudgetNote)
|
|
128
|
+
lines.push(` warn: ${report.minBudgetNote}`);
|
|
129
|
+
return lines;
|
|
130
|
+
}
|
|
131
|
+
export function renderReportFooter(report) {
|
|
132
|
+
const lines = [` overall: ${report.overall}`, ...renderSoftBudgetTier(report)];
|
|
133
|
+
// A SECOND warn line, never merged with the soft tier's: that one is a claim about the funding
|
|
134
|
+
// plan against the package's own sizing, this one is a claim about what the backend actually
|
|
135
|
+
// landed, and a report can truthfully carry both. Same `warn:` label for the same reason — it is
|
|
136
|
+
// what stops a reader taking a bracketed code on a `live` deploy for a refusal.
|
|
137
|
+
if (report.partialFundNote)
|
|
138
|
+
lines.push(` warn: ${report.partialFundNote}`);
|
|
139
|
+
// Mutually exclusive with the line above per wallet, but not per report: a two-sleeve package
|
|
140
|
+
// can land one short wallet and one unreadable read, and each wallet gets the note that fits it.
|
|
141
|
+
if (report.fundedUnreadableNote)
|
|
142
|
+
lines.push(` warn: ${report.fundedUnreadableNote}`);
|
|
143
|
+
if (report.next)
|
|
144
|
+
lines.push(` next: ${report.next}`);
|
|
145
|
+
return lines;
|
|
146
|
+
}
|
|
147
|
+
/** Fresh-read layer, printed beside (never instead of) the journal narration. */
|
|
148
|
+
export function renderLiveLayer(live) {
|
|
149
|
+
if (live.unavailable)
|
|
150
|
+
return [` live (fresh read): unavailable — ${live.unavailable}`];
|
|
151
|
+
const lines = [" live (fresh read):"];
|
|
152
|
+
if (live.strategies.length === 0)
|
|
153
|
+
lines.push(" strategies: none matching this package");
|
|
154
|
+
for (const strategy of live.strategies) {
|
|
155
|
+
lines.push(` strategy ${strategy.strategyName}: status ${strategy.status}, ` +
|
|
156
|
+
`wallet ${strategy.strategyWalletAddress}, totalFunded ${strategy.totalFunded ?? "unreadable"}`);
|
|
157
|
+
}
|
|
158
|
+
if (live.runtimes.length === 0)
|
|
159
|
+
lines.push(" runtimes: none registered for this package");
|
|
160
|
+
for (const runtime of live.runtimes) {
|
|
161
|
+
lines.push(` runtime ${runtime.id}: wallet ${runtime.wallet ?? "(none)"}`);
|
|
162
|
+
}
|
|
163
|
+
return lines;
|
|
164
|
+
}
|
|
165
|
+
export function renderDeploySnapshotLines(snap, now = Date.now()) {
|
|
166
|
+
const lines = [renderHeader(snap, now)];
|
|
167
|
+
const interrupted = snap.state.status === "interrupted";
|
|
168
|
+
if (snap.report)
|
|
169
|
+
lines.push(...renderStepTable(snap.report));
|
|
170
|
+
const events = snap.events ?? [];
|
|
171
|
+
if (events.length > 0) {
|
|
172
|
+
lines.push(...(interrupted ? [" history (journal):"] : []), ...renderEventsTail(events));
|
|
173
|
+
}
|
|
174
|
+
if (snap.live)
|
|
175
|
+
lines.push(...renderLiveLayer(snap.live));
|
|
176
|
+
if (snap.report)
|
|
177
|
+
lines.push(...renderReportFooter(snap.report));
|
|
178
|
+
if (snap.next)
|
|
179
|
+
lines.push(` next: ${snap.next}`);
|
|
180
|
+
return lines;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* D-12 exit-code contract for `senpi deploy status`. 1 is reserved for transport/internal
|
|
184
|
+
* errors (node/commander default) and is also the unknown-status fallback so a future status
|
|
185
|
+
* can never silently read as success. Anything richer than the overall status: use --json.
|
|
186
|
+
*/
|
|
187
|
+
const DEPLOY_EXIT_CODES = {
|
|
188
|
+
live: 0,
|
|
189
|
+
refused: 2,
|
|
190
|
+
failed: 3,
|
|
191
|
+
"installed-unobserved": 4,
|
|
192
|
+
interrupted: 5,
|
|
193
|
+
// A report whose overall is `pending` (a wallet was still funding when the poll budget ran out)
|
|
194
|
+
// is the same answer as a job still in flight: not finished, re-run to resume. It shares code 6
|
|
195
|
+
// rather than falling to 1, which would call a normal resumable outcome an internal error.
|
|
196
|
+
pending: 6,
|
|
197
|
+
};
|
|
198
|
+
/** The ONE place the D-12 map lives; the status action calls it. */
|
|
199
|
+
export function exitCodeForDeploy(snap) {
|
|
200
|
+
// A snapshot with no state is a broken gateway contract, not a running job — 1, not 6.
|
|
201
|
+
if (!snap?.state?.status)
|
|
202
|
+
return 1;
|
|
203
|
+
// `interrupted` is a terminal STATE, not an overall — a gateway restart killed the job. It is
|
|
204
|
+
// not pending: nothing is running, so it must never exit 6.
|
|
205
|
+
if (snap.state.status === "interrupted")
|
|
206
|
+
return DEPLOY_EXIT_CODES.interrupted;
|
|
207
|
+
if (snap.state.status !== "done")
|
|
208
|
+
return 6; // pending — job still running
|
|
209
|
+
return DEPLOY_EXIT_CODES[snap.state.overall ?? ""] ?? 1;
|
|
210
|
+
}
|
|
211
|
+
/** CLI entry point: print the snapshot rendering. */
|
|
212
|
+
export function renderDeploySnapshot(snap, now = Date.now()) {
|
|
213
|
+
for (const line of renderDeploySnapshotLines(snap, now))
|
|
214
|
+
console.log(line);
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=deploy-render.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy-render.js","sourceRoot":"","sources":["../../src/cli/deploy-render.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guide-commands.d.ts","sourceRoot":"","sources":["../../src/cli/guide-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"guide-commands.d.ts","sourceRoot":"","sources":["../../src/cli/guide-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA+cH,eAAO,MAAM,eAAe,QA4RpB,CAAC;AAIT,kFAAkF;AAClF,UAAU,gBAAgB;IACxB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACvD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC5C,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC9D,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC;CACxF;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,gBAAgB,EACvB,OAAO,EAAE,MAAM,GACd,IAAI,CA2CN"}
|
|
@@ -24,6 +24,7 @@ Quick commands:
|
|
|
24
24
|
senpi guide actions Action types and decision modes
|
|
25
25
|
senpi guide dsl DSL exit: phases, lock modes, tiers, time-based cuts
|
|
26
26
|
senpi validate <pkg> Prove a strategy runs before funding it (static → import → live)
|
|
27
|
+
senpi deploy -p <pkg> Take a proven package live: create+fund → install → verified tick
|
|
27
28
|
senpi scanner Per-scanner health: runs, errors, liveness, "(no signals yet)" flag
|
|
28
29
|
senpi events Local domain-event log — the trade narrative
|
|
29
30
|
senpi explain <asset> Stitch one asset's position lifecycle from the event log
|
|
@@ -478,11 +479,75 @@ senpi config — Manage CLI preferences (~/.openclaw/senpi-cli.json)
|
|
|
478
479
|
config unset <key> Remove a key
|
|
479
480
|
config reset Clear all preferences
|
|
480
481
|
|
|
482
|
+
senpi deploy — Take a strategy package live, end to end (the strategy lifecycle)
|
|
483
|
+
openclaw senpi deploy -p <package-dir> --budget <usd> # start (detached): preflight → create+fund → install → verified tick
|
|
484
|
+
openclaw senpi deploy status # watch until terminal; quotes the verified report
|
|
485
|
+
-p, --path <dir> Strategy package directory (contains strategy.yaml)
|
|
486
|
+
--budget <usd> Total budget across the package's wallets (min $10/wallet)
|
|
487
|
+
--decision-model <model> Required if the package uses decision_mode: llm
|
|
488
|
+
--tick-wait <seconds> Wait for one verified scanner tick (default 120, 0 skips)
|
|
489
|
+
--max-wait <seconds> Wait for wallets to reach ACTIVE (default 150)
|
|
490
|
+
--json Raw JSON output
|
|
491
|
+
deploy returns in ~1s; the job runs detached. Poll
|
|
492
|
+
'deploy status' until it is terminal. Exit codes:
|
|
493
|
+
0 live · 2 refused · 3 failed · 4 installed-unobserved ·
|
|
494
|
+
5 interrupted · 6 pending/running · 1 error. An
|
|
495
|
+
unobserved tick reports as "unobserved", never as success.
|
|
496
|
+
'deploy' itself uses the same classes at START: 0 job
|
|
497
|
+
started · 2 refused (the message leads with its code, e.g.
|
|
498
|
+
[INVALID_REQUEST]) · 1 internal/transport. So 2 always
|
|
499
|
+
means obey the message; 1 always means the deploy's state
|
|
500
|
+
is unknown — never retry a 2.
|
|
501
|
+
A package no 'senpi validate' has ever proven — or one whose
|
|
502
|
+
files have changed since, or whose proof predates this
|
|
503
|
+
runtime — is refused BEFORE any money moves. The refusal
|
|
504
|
+
leads with [E_VALIDATE_NO_PROOF] /
|
|
505
|
+
[E_VALIDATE_CONTENT_CHANGED] /
|
|
506
|
+
[E_VALIDATE_RUNTIME_VERSION_CHANGED] and names the exact
|
|
507
|
+
validate command for the instance that failed. Two instances
|
|
508
|
+
sharing one runtime directory are refused outright
|
|
509
|
+
([INVALID_REQUEST]): a proof lives beside its recipe, one
|
|
510
|
+
file per directory, so it cannot speak for both.
|
|
511
|
+
Budget is two-tier: BELOW the $10/wallet floor it refuses
|
|
512
|
+
[E_FUNDS_BELOW_FLOOR]; and when the split leaves a wallet
|
|
513
|
+
under its OWN sizing it DEPLOYS and warns
|
|
514
|
+
[W_BUDGET_BELOW_STRATEGY_MIN] (that sleeve runs degraded —
|
|
515
|
+
fewer slots than authored). [W_BUDGET_UNRESOLVED] = the
|
|
516
|
+
minimum could not be computed and may be understated.
|
|
517
|
+
Neither warn stops a deploy; both judge each wallet against
|
|
518
|
+
its OWN allocation, not the budget against the package
|
|
519
|
+
total (those differ once a sleeve is adopted). To run the
|
|
520
|
+
authored design you must close and redeploy — a re-run at
|
|
521
|
+
a bigger --budget only adopts the wallet it already made.
|
|
522
|
+
Follow the warn's own close command verbatim; it is scoped
|
|
523
|
+
to the short sleeves so adopted wallets are left alone.
|
|
524
|
+
Some reports deliberately carry NO close command (a funded
|
|
525
|
+
wallet with no runtime installed; a funding_share: 0
|
|
526
|
+
sleeve; or when [E_ROLLBACK_INCOMPLETE] owns the cleanup)
|
|
527
|
+
— that is the correct answer there, not a gap to fill:
|
|
528
|
+
never substitute a package-wide close.
|
|
529
|
+
Both of those judge the PLAN. After the wallets exist the
|
|
530
|
+
report also checks the OUTCOME: when the backend lands under
|
|
531
|
+
90% of what a wallet was asked to be funded, it warns
|
|
532
|
+
[W_BUDGET_PARTIAL_FUND] with both numbers ("funded $60.00 of
|
|
533
|
+
requested $500.00 (12%, short $440.00)"). The strategy is
|
|
534
|
+
still live and the exit code does not move — do NOT close it
|
|
535
|
+
over the shortfall. Quote the FUNDED figure, never the
|
|
536
|
+
requested one. Those figures are AT DEPLOY TIME and the note
|
|
537
|
+
re-renders on every later status read, so re-read the
|
|
538
|
+
current funding (status.py) before moving money, then top up
|
|
539
|
+
via the senpi-deposit-withdraw-transfer skill;
|
|
540
|
+
close-and-redeploy is the destructive fallback. The warn is
|
|
541
|
+
silent wherever a D-6 rollback was attempted — if the create
|
|
542
|
+
step carries [E_ROLLBACK_INCOMPLETE], THAT line owns the
|
|
543
|
+
remediation (reclaim), and it is the one to follow.
|
|
544
|
+
When the backend reports no readable funded amount at all,
|
|
545
|
+
you get [W_BUDGET_FUNDED_UNREADABLE] instead: no percentage,
|
|
546
|
+
no shortfall, no top-up. The funded amount is UNKNOWN, never
|
|
547
|
+
$0.00 — ask the USER to verify what actually landed before
|
|
548
|
+
any money action
|
|
549
|
+
|
|
481
550
|
senpi runtime — Manage runtimes
|
|
482
|
-
runtime create Add a runtime from a YAML file
|
|
483
|
-
-p, --path <path> Path to strategy YAML file
|
|
484
|
-
-c, --content <yaml> Inline YAML content
|
|
485
|
-
--runtime-id <id> Override auto-derived ID
|
|
486
551
|
runtime delete [id] Remove a runtime
|
|
487
552
|
--id <runtime_id> Delete by runtime ID
|
|
488
553
|
--address <wallet> Delete by wallet address
|
|
@@ -510,6 +575,12 @@ senpi validate — Prove a strategy can execute BEFORE it is funded
|
|
|
510
575
|
command, not the code
|
|
511
576
|
A full unscoped PASS at live depth writes .senpi-proof.json beside the recipe
|
|
512
577
|
(content-addressed, no expiry); the deploy gate verifies it via verifyProof().
|
|
578
|
+
That gate REFUSES, before any money moves: [E_VALIDATE_NO_PROOF] nothing here
|
|
579
|
+
was ever observed to run · [E_VALIDATE_CONTENT_CHANGED] the files moved since
|
|
580
|
+
the proof, and it names which · [E_VALIDATE_RUNTIME_VERSION_CHANGED] the proof
|
|
581
|
+
predates the running runtime (the package needs no edit — just re-prove it).
|
|
582
|
+
A proof attests that this content RAN and passed, not that every check at that
|
|
583
|
+
depth produced a verdict — deploy re-checks the live instrument universe itself.
|
|
513
584
|
|
|
514
585
|
senpi status — Lightweight runtime health digest
|
|
515
586
|
status Overall health + scanners (with degraded count),
|
|
@@ -623,8 +694,9 @@ senpi.installRuntime
|
|
|
623
694
|
Success: { id, name, wallet }
|
|
624
695
|
Errors: INVALID_REQUEST (missing YAML, duplicate ID/wallet, or the install gate: a recipe that
|
|
625
696
|
cannot trade — no margin source, no risk guardrails, missing scanner entrypoint, or an
|
|
626
|
-
unresolvable scanner path — is refused with what/why/fix per problem
|
|
627
|
-
|
|
697
|
+
unresolvable scanner path — is refused with what/why/fix per problem, the message
|
|
698
|
+
leading with the bracketed code of the first blocking finding, e.g.
|
|
699
|
+
[E_VALIDATE_UNGATED]), UNAVAILABLE (bad YAML, start failure)
|
|
628
700
|
|
|
629
701
|
senpi.listRuntimes
|
|
630
702
|
Params: (none)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guide-commands.js","sourceRoot":"","sources":["../../src/cli/guide-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,aAAa,GACjB,0EAA0E,CAAC;AAE7E,+EAA+E;AAE/E,MAAM,aAAa,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC;qBACtB,OAAO
|
|
1
|
+
{"version":3,"file":"guide-commands.js","sourceRoot":"","sources":["../../src/cli/guide-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,12 @@ export declare function renderEventsDigest(entries: StoredEvent[]): string;
|
|
|
24
24
|
export declare function renderExplain(asset: string, entries: StoredEvent[]): string;
|
|
25
25
|
/** Minimal Commander command type for subcommands and options. */
|
|
26
26
|
interface CommanderCommand {
|
|
27
|
-
|
|
27
|
+
/** Commander 14 accepts either a description string or an options object (e.g. `{ hidden: true }`). */
|
|
28
|
+
command(name: string, descOrOpts?: string | {
|
|
29
|
+
hidden?: boolean;
|
|
30
|
+
}, opts?: {
|
|
31
|
+
hidden?: boolean;
|
|
32
|
+
}): CommanderCommand;
|
|
28
33
|
description(desc: string): CommanderCommand;
|
|
29
34
|
argument(name: string, description?: string): CommanderCommand;
|
|
30
35
|
option(flags: string, description?: string): CommanderCommand;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"senpi-commands.d.ts","sourceRoot":"","sources":["../../src/cli/senpi-commands.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"senpi-commands.d.ts","sourceRoot":"","sources":["../../src/cli/senpi-commands.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAmBH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAI/D;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE;IAAE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,gBAAgB,GAAG,OAAO,CAAA;CAAE,GAChF,IAAI,CAgxCN;AAyVD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,CAWvE;AAmDD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CASjE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAW3E;AA8HD,kEAAkE;AAClE,UAAU,gBAAgB;IACxB,uGAAuG;IACvG,OAAO,CACL,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,GAAG;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,EAC1C,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAC1B,gBAAgB,CAAC;IACpB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC/D,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC9D,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACtE,MAAM,CACJ,EAAE,EACE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GACzD,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GACzE,gBAAgB,CAAC;CACrB"}
|