@trydreamstate/cli 1.3.2 → 1.3.3
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 +29 -16
- package/agent-plugin/.claude-plugin/plugin.json +1 -1
- package/agent-plugin/.codex-plugin/plugin.json +1 -1
- package/agent-plugin/hooks/approve-readonly.sh +15 -0
- package/agent-plugin/hooks/hooks.json +17 -0
- package/agent-plugin/skills/crm/SKILL.md +2 -2
- package/agent-plugin/skills/diagnostics/SKILL.md +1 -1
- package/agent-plugin/skills/dreamstate/SKILL.md +13 -5
- package/agent-plugin/skills/first-win/SKILL.md +2 -2
- package/agent-plugin/skills/inbox-replies/SKILL.md +1 -1
- package/agent-plugin/skills/knowledge/SKILL.md +1 -1
- package/agent-plugin/skills/linkedin-posts/SKILL.md +1 -1
- package/agent-plugin/skills/linkedin-warm-signals/SKILL.md +2 -2
- package/agent-plugin/skills/list-building/SKILL.md +4 -4
- package/agent-plugin/skills/outreach/SKILL.md +1 -1
- package/agent-plugin/skills/outreach/steps-and-timing.md +1 -1
- package/agent-plugin/skills/plays/SKILL.md +2 -2
- package/agent-plugin/skills/reddit-posts/SKILL.md +1 -1
- package/agent-plugin/skills/skill-authoring/SKILL.md +1 -1
- package/agent-plugin/skills/social/SKILL.md +2 -2
- package/agent-plugin/skills/visibility/SKILL.md +2 -2
- package/agent-plugin/skills/workflows/SKILL.md +3 -3
- package/agent-plugin/skills/worksheet-tidy/SKILL.md +1 -1
- package/agent-plugin/skills/writing/SKILL.md +1 -1
- package/agent-plugin/skills/x-posts/SKILL.md +1 -1
- package/dist/agentGuidance.generated.json +35 -0
- package/dist/client.d.ts +31 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +115 -33
- package/dist/commandTable.d.ts +26 -0
- package/dist/commandTable.d.ts.map +1 -0
- package/dist/commandTable.js +54 -0
- package/dist/commands/sequences.d.ts +1 -1
- package/dist/commands/sequences.d.ts.map +1 -1
- package/dist/commands/sequences.js +37 -36
- package/dist/commands/shared.d.ts +4 -26
- package/dist/commands/shared.d.ts.map +1 -1
- package/dist/commands/shared.js +129 -127
- package/dist/commands/workflows.d.ts +1 -1
- package/dist/commands/workflows.d.ts.map +1 -1
- package/dist/commands/workflows.js +35 -41
- package/dist/errors.d.ts +78 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +117 -0
- package/dist/gatedRun.d.ts +81 -0
- package/dist/gatedRun.d.ts.map +1 -0
- package/dist/gatedRun.js +370 -0
- package/dist/idempotency.d.ts +38 -0
- package/dist/idempotency.d.ts.map +1 -0
- package/dist/idempotency.js +106 -0
- package/dist/index.d.ts +21 -35
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +372 -366
- package/dist/runWait.d.ts +2 -1
- package/dist/runWait.d.ts.map +1 -1
- package/dist/runWait.js +3 -1
- package/dist/schemaCoercion.d.ts +20 -0
- package/dist/schemaCoercion.d.ts.map +1 -0
- package/dist/schemaCoercion.js +123 -0
- package/dist/skillInstaller.d.ts +40 -0
- package/dist/skillInstaller.d.ts.map +1 -1
- package/dist/skillInstaller.js +108 -9
- package/dist/tableFilePreview.d.ts +14 -0
- package/dist/tableFilePreview.d.ts.map +1 -1
- package/dist/tableFilePreview.js +19 -8
- package/dist/tableFileReader.d.ts +26 -0
- package/dist/tableFileReader.d.ts.map +1 -0
- package/dist/tableFileReader.js +108 -0
- package/dist/tablesImport.d.ts +57 -0
- package/dist/tablesImport.d.ts.map +1 -0
- package/dist/tablesImport.js +263 -0
- package/dist/turnCache.d.ts +14 -1
- package/dist/turnCache.d.ts.map +1 -1
- package/dist/turnCache.js +25 -8
- package/package.json +3 -2
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.stableJson = stableJson;
|
|
4
|
+
exports.pendingIdempotencyPath = pendingIdempotencyPath;
|
|
5
|
+
exports.idempotencyDigest = idempotencyDigest;
|
|
6
|
+
exports.deterministicIdempotencyKey = deterministicIdempotencyKey;
|
|
7
|
+
exports.pendingIdempotencyKey = pendingIdempotencyKey;
|
|
8
|
+
exports.finishIdempotencyAttempt = finishIdempotencyAttempt;
|
|
9
|
+
const node_crypto_1 = require("node:crypto");
|
|
10
|
+
const promises_1 = require("node:fs/promises");
|
|
11
|
+
const node_path_1 = require("node:path");
|
|
12
|
+
/** A key-sorted JSON string, so two spellings of one input fingerprint alike. */
|
|
13
|
+
function stableJson(value) {
|
|
14
|
+
if (Array.isArray(value))
|
|
15
|
+
return `[${value.map(stableJson).join(',')}]`;
|
|
16
|
+
if (value && typeof value === 'object') {
|
|
17
|
+
const record = value;
|
|
18
|
+
return `{${Object.keys(record).sort().filter((key) => record[key] !== undefined).map((key) => `${JSON.stringify(key)}:${stableJson(record[key])}`).join(',')}}`;
|
|
19
|
+
}
|
|
20
|
+
return JSON.stringify(value) ?? 'null';
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Keys that say how one HTTP attempt is made, not what the command does. They
|
|
24
|
+
* change between a command and its re-run (a fresh tool_turn_token from a new
|
|
25
|
+
* tools get), so they must not decide the idempotency key.
|
|
26
|
+
*/
|
|
27
|
+
const TRANSPORT_ONLY_BODY_KEYS = new Set(['tool_turn_token', 'idempotency_key']);
|
|
28
|
+
function pendingIdempotencyPath(credentialsPath) {
|
|
29
|
+
return (0, node_path_1.join)((0, node_path_1.dirname)(credentialsPath), 'idempotency-attempts.json');
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Deterministic idempotency key for one logical command.
|
|
33
|
+
*
|
|
34
|
+
* A random key per invocation made a re-run after a timeout a brand new
|
|
35
|
+
* operation: the server could not replay the first attempt, so a write whose
|
|
36
|
+
* response was lost ran twice. The key is now a digest of the capability, the
|
|
37
|
+
* canonical request body and the workspace, so running the same command again
|
|
38
|
+
* presents the same key and the server replays. A key the caller names with
|
|
39
|
+
* --idempotency-key is used as given and never reaches this function.
|
|
40
|
+
*
|
|
41
|
+
* Because the whole body is hashed, a changed input, ceiling, mode, quote or
|
|
42
|
+
* approval flag is a different command with a different key. That is the same
|
|
43
|
+
* rule the server applies when it refuses a reused key with a different body
|
|
44
|
+
* (idempotency_key_reuse), so a deliberate change can never collide with an
|
|
45
|
+
* earlier attempt.
|
|
46
|
+
*/
|
|
47
|
+
function idempotencyDigest(identity) {
|
|
48
|
+
const body = identity.body && typeof identity.body === 'object' && !Array.isArray(identity.body)
|
|
49
|
+
? Object.fromEntries(Object.entries(identity.body)
|
|
50
|
+
.filter(([key]) => !TRANSPORT_ONLY_BODY_KEYS.has(key)))
|
|
51
|
+
: identity.body;
|
|
52
|
+
return (0, node_crypto_1.createHash)('sha256')
|
|
53
|
+
.update(stableJson({
|
|
54
|
+
scope: identity.scope,
|
|
55
|
+
workspace: identity.workspace ?? null,
|
|
56
|
+
body,
|
|
57
|
+
}))
|
|
58
|
+
.digest('hex')
|
|
59
|
+
.slice(0, 40);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Request digest, not a durable command key. A terminal attempt removes its
|
|
63
|
+
* entry; only an interrupted or transient attempt is resumed with this key.
|
|
64
|
+
*/
|
|
65
|
+
function deterministicIdempotencyKey(identity) {
|
|
66
|
+
return `dscli-${idempotencyDigest(identity)}`;
|
|
67
|
+
}
|
|
68
|
+
async function loadPending(path) {
|
|
69
|
+
try {
|
|
70
|
+
const value = JSON.parse(await (0, promises_1.readFile)(path, 'utf8'));
|
|
71
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
72
|
+
return {};
|
|
73
|
+
return Object.fromEntries(Object.entries(value)
|
|
74
|
+
.filter((entry) => typeof entry[1] === 'string' && entry[1].length > 0));
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
if (error.code === 'ENOENT')
|
|
78
|
+
return {};
|
|
79
|
+
throw error;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
async function savePending(path, attempts) {
|
|
83
|
+
await (0, promises_1.mkdir)((0, node_path_1.dirname)(path), { recursive: true, mode: 0o700 });
|
|
84
|
+
await (0, promises_1.writeFile)(path, JSON.stringify(attempts), { mode: 0o600 });
|
|
85
|
+
}
|
|
86
|
+
/** Gets a fresh attempt key, or resumes only a pending attempt for this digest. */
|
|
87
|
+
async function pendingIdempotencyKey(path, identity) {
|
|
88
|
+
const attempts = await loadPending(path);
|
|
89
|
+
const digest = idempotencyDigest(identity);
|
|
90
|
+
const existing = attempts[digest];
|
|
91
|
+
if (existing)
|
|
92
|
+
return existing;
|
|
93
|
+
const key = `dscli-${(0, node_crypto_1.randomBytes)(20).toString('hex')}`;
|
|
94
|
+
attempts[digest] = key;
|
|
95
|
+
await savePending(path, attempts);
|
|
96
|
+
return key;
|
|
97
|
+
}
|
|
98
|
+
/** A success or definitive refusal finishes an attempt; a transient outcome keeps it resumable. */
|
|
99
|
+
async function finishIdempotencyAttempt(path, identity) {
|
|
100
|
+
const attempts = await loadPending(path);
|
|
101
|
+
const digest = idempotencyDigest(identity);
|
|
102
|
+
if (!(digest in attempts))
|
|
103
|
+
return;
|
|
104
|
+
delete attempts[digest];
|
|
105
|
+
await savePending(path, attempts);
|
|
106
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,20 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { type PluginAgent, type RunAgentCommand } from './pluginInstaller';
|
|
3
|
+
import { type ServerReleaseInfo } from './client';
|
|
4
|
+
import { CLI_EXIT, CliUsageError } from './errors';
|
|
5
|
+
import { capabilityIdempotencyKey, omitsToolTurnForInlineTableRead, toolTurnToken } from './gatedRun';
|
|
3
6
|
import { type SkillInstallAgent } from './skillInstaller';
|
|
4
7
|
export type CanonicalApiCapabilityId = string;
|
|
5
|
-
export
|
|
6
|
-
readonly SUCCESS: 0;
|
|
7
|
-
readonly UNCLASSIFIED: 1;
|
|
8
|
-
readonly USAGE: 2;
|
|
9
|
-
readonly AUTH: 3;
|
|
10
|
-
readonly NOT_FOUND: 4;
|
|
11
|
-
readonly SERVER: 5;
|
|
12
|
-
readonly RATE_LIMITED: 6;
|
|
13
|
-
readonly APPROVAL: 7;
|
|
14
|
-
readonly TIMEOUT: 8;
|
|
15
|
-
readonly REFUSED: 9;
|
|
16
|
-
readonly TRANSPORT: 10;
|
|
17
|
-
};
|
|
8
|
+
export { CLI_EXIT, CliUsageError, capabilityIdempotencyKey, omitsToolTurnForInlineTableRead, toolTurnToken };
|
|
18
9
|
export type CliCommand = {
|
|
19
10
|
command: 'help';
|
|
20
11
|
} | {
|
|
@@ -134,8 +125,12 @@ export type CliCommand = {
|
|
|
134
125
|
input: Record<string, unknown>;
|
|
135
126
|
pathParams?: Record<string, string>;
|
|
136
127
|
mode?: 'dry_run' | 'live' | 'smoke_test';
|
|
137
|
-
agentSessionId?: string;
|
|
138
128
|
idempotencyKey?: string;
|
|
129
|
+
approved?: boolean;
|
|
130
|
+
approvalId?: string;
|
|
131
|
+
approvedEffectUnknown?: boolean;
|
|
132
|
+
quoteHash?: string;
|
|
133
|
+
turnToken?: string;
|
|
139
134
|
jsonOutput?: boolean;
|
|
140
135
|
open?: boolean;
|
|
141
136
|
maxCredits?: number;
|
|
@@ -150,7 +145,6 @@ export type CliCommand = {
|
|
|
150
145
|
upsertKey?: string;
|
|
151
146
|
rowKind?: 'person' | 'company';
|
|
152
147
|
keepUnmappedColumns?: boolean;
|
|
153
|
-
background: boolean;
|
|
154
148
|
jsonOutput?: boolean;
|
|
155
149
|
} | {
|
|
156
150
|
command: 'runs_list';
|
|
@@ -160,14 +154,6 @@ export type CliCommand = {
|
|
|
160
154
|
command: 'runs_get';
|
|
161
155
|
runId: string;
|
|
162
156
|
jsonOutput?: boolean;
|
|
163
|
-
} | {
|
|
164
|
-
command: 'runs_resume';
|
|
165
|
-
runId: string;
|
|
166
|
-
stateVersion: number;
|
|
167
|
-
reason?: string;
|
|
168
|
-
idempotencyKey?: string;
|
|
169
|
-
open?: boolean;
|
|
170
|
-
jsonOutput?: boolean;
|
|
171
157
|
} | {
|
|
172
158
|
command: 'runs_events';
|
|
173
159
|
runId: string;
|
|
@@ -197,20 +183,14 @@ export interface CliRuntime {
|
|
|
197
183
|
homeDirectory?: string;
|
|
198
184
|
runAgentCommand?: RunAgentCommand;
|
|
199
185
|
}
|
|
200
|
-
export declare class CliUsageError extends Error {
|
|
201
|
-
constructor(message: string);
|
|
202
|
-
}
|
|
203
186
|
export declare function parseCliArgs(argv: string[]): CliCommand;
|
|
204
|
-
export declare function toolTurnToken(value: unknown): string;
|
|
205
|
-
export declare function omitsToolTurnForInlineTableRead(capabilityId: string): boolean;
|
|
206
187
|
/**
|
|
207
|
-
*
|
|
208
|
-
*
|
|
209
|
-
*
|
|
210
|
-
*
|
|
211
|
-
*
|
|
188
|
+
* The refusal envelope, in the shared shape { ok:false, error, meta }. The server's
|
|
189
|
+
* own message, retry decision, repair, details and meta (trace_id, server_version,
|
|
190
|
+
* minimum_cli_version, release_sha) are forwarded unchanged; retry_after and
|
|
191
|
+
* idempotency_key are request receipts, so they stay in meta. Process exit status
|
|
192
|
+
* remains process-level state: ToolEnvelopeMeta intentionally has no exit_code.
|
|
212
193
|
*/
|
|
213
|
-
export declare function capabilityIdempotencyKey(fetched: unknown, explicit?: string): string | null;
|
|
214
194
|
export declare function refusalEnvelope(error: unknown, exitCode: number): Record<string, unknown>;
|
|
215
195
|
type SpawnLike = (command: string, args: readonly string[], options: {
|
|
216
196
|
detached: boolean;
|
|
@@ -230,6 +210,12 @@ export declare function extractWorkspaceFlag(argv: string[]): {
|
|
|
230
210
|
argv: string[];
|
|
231
211
|
workspace?: string;
|
|
232
212
|
};
|
|
213
|
+
/**
|
|
214
|
+
* What `dreamstate status` reports. The release identity comes from the server's
|
|
215
|
+
* own answers (envelope meta and X-Dreamstate-* headers on every response), so
|
|
216
|
+
* skew is measured, not assumed: with a server that publishes nothing the skew is
|
|
217
|
+
* "unknown", never "compatible".
|
|
218
|
+
*/
|
|
219
|
+
export declare function statusData(whoami: unknown, health: unknown, info: ServerReleaseInfo): Record<string, unknown>;
|
|
233
220
|
export declare function runCli(argv?: string[], runtime?: CliRuntime): Promise<void>;
|
|
234
|
-
export {};
|
|
235
221
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AA8BA,OAAO,EAA0F,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAInK,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|