@trydreamstate/cli 1.3.3 → 1.3.5

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 (74) hide show
  1. package/README.md +14 -7
  2. package/agent-plugin/.claude-plugin/plugin.json +1 -1
  3. package/agent-plugin/.codex-plugin/plugin.json +1 -1
  4. package/agent-plugin/hooks/approve-readonly.sh +2 -2
  5. package/agent-plugin/hooks/hooks.json +1 -1
  6. package/agent-plugin/skills/crm/SKILL.md +2 -2
  7. package/agent-plugin/skills/diagnostics/SKILL.md +3 -1
  8. package/agent-plugin/skills/dreamstate/SKILL.md +5 -3
  9. package/agent-plugin/skills/first-win/SKILL.md +2 -2
  10. package/agent-plugin/skills/inbox-replies/SKILL.md +3 -1
  11. package/agent-plugin/skills/knowledge/SKILL.md +3 -5
  12. package/agent-plugin/skills/linkedin-posts/SKILL.md +3 -1
  13. package/agent-plugin/skills/linkedin-warm-signals/SKILL.md +3 -3
  14. package/agent-plugin/skills/list-building/SKILL.md +4 -9
  15. package/agent-plugin/skills/list-building/column-authoring.md +3 -2
  16. package/agent-plugin/skills/list-building/sourcing.md +2 -2
  17. package/agent-plugin/skills/outreach/SKILL.md +3 -3
  18. package/agent-plugin/skills/plays/SKILL.md +3 -3
  19. package/agent-plugin/skills/reddit-posts/SKILL.md +3 -1
  20. package/agent-plugin/skills/skill-authoring/SKILL.md +3 -1
  21. package/agent-plugin/skills/social/SKILL.md +3 -5
  22. package/agent-plugin/skills/visibility/SKILL.md +2 -6
  23. package/agent-plugin/skills/workflows/SKILL.md +2 -2
  24. package/agent-plugin/skills/workflows/lifecycle-and-enrollment.md +1 -1
  25. package/agent-plugin/skills/worksheet-tidy/SKILL.md +3 -1
  26. package/agent-plugin/skills/writing/SKILL.md +3 -5
  27. package/agent-plugin/skills/x-posts/SKILL.md +3 -1
  28. package/dist/agentGuidance.generated.json +4 -4
  29. package/dist/capabilityPosture.d.ts +12 -0
  30. package/dist/capabilityPosture.d.ts.map +1 -0
  31. package/dist/capabilityPosture.js +39 -0
  32. package/dist/client.d.ts +9 -3
  33. package/dist/client.d.ts.map +1 -1
  34. package/dist/client.js +110 -63
  35. package/dist/commands/sequences.d.ts +3 -2
  36. package/dist/commands/sequences.d.ts.map +1 -1
  37. package/dist/commands/sequences.js +19 -37
  38. package/dist/commands/shared.d.ts.map +1 -1
  39. package/dist/commands/shared.js +22 -45
  40. package/dist/commands/workflows.d.ts +3 -2
  41. package/dist/commands/workflows.d.ts.map +1 -1
  42. package/dist/commands/workflows.js +19 -35
  43. package/dist/config.d.ts +5 -1
  44. package/dist/config.d.ts.map +1 -1
  45. package/dist/config.js +12 -2
  46. package/dist/errors.d.ts +2 -6
  47. package/dist/errors.d.ts.map +1 -1
  48. package/dist/errors.js +10 -43
  49. package/dist/gatedRun.d.ts +2 -2
  50. package/dist/gatedRun.d.ts.map +1 -1
  51. package/dist/gatedRun.js +157 -60
  52. package/dist/generated/packVerbs.generated.json +492 -0
  53. package/dist/generated/runContract.generated.d.ts +4 -0
  54. package/dist/generated/runContract.generated.d.ts.map +1 -0
  55. package/dist/generated/runContract.generated.js +7 -0
  56. package/dist/index.d.ts +9 -2
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +164 -59
  59. package/dist/money.d.ts +10 -0
  60. package/dist/money.d.ts.map +1 -0
  61. package/dist/money.js +75 -0
  62. package/dist/registryManifest.d.ts +6 -0
  63. package/dist/registryManifest.d.ts.map +1 -0
  64. package/dist/registryManifest.js +66 -0
  65. package/dist/runContract.d.ts +10 -0
  66. package/dist/runContract.d.ts.map +1 -0
  67. package/dist/runContract.js +13 -0
  68. package/dist/runWait.d.ts +0 -1
  69. package/dist/runWait.d.ts.map +1 -1
  70. package/dist/runWait.js +2 -13
  71. package/dist/turnCache.d.ts +3 -1
  72. package/dist/turnCache.d.ts.map +1 -1
  73. package/dist/turnCache.js +6 -2
  74. package/package.json +4 -2
@@ -14,8 +14,9 @@ const index_1 = require("../index");
14
14
  const errors_1 = require("../errors");
15
15
  const gatedRun_1 = require("../gatedRun");
16
16
  const node_fs_1 = require("node:fs");
17
+ const money_1 = require("../money");
17
18
  const runWait_1 = require("../runWait");
18
- const MODES = ['dry_run', 'live', 'smoke_test'];
19
+ const runContract_1 = require("../runContract");
19
20
  function parseObject(raw, flag) {
20
21
  try {
21
22
  const value = JSON.parse(raw);
@@ -68,9 +69,9 @@ function takeSchemaFlags(argv, known) {
68
69
  function parseMode(value) {
69
70
  if (value === undefined)
70
71
  return undefined;
71
- if (MODES.includes(value))
72
+ if (runContract_1.RUN_MODES.includes(value))
72
73
  return value;
73
- throw new errors_1.CliUsageError(`--mode must be one of: ${MODES.join(', ')}`);
74
+ throw new errors_1.CliUsageError(`--mode must be one of: ${runContract_1.RUN_MODES.join(', ')}`);
74
75
  }
75
76
  function buildPackParser(pack, kind, specs, usage) {
76
77
  return (argv) => {
@@ -82,6 +83,7 @@ function buildPackParser(pack, kind, specs, usage) {
82
83
  const options = {
83
84
  mode: { type: 'string' }, 'dry-run': { type: 'boolean' }, live: { type: 'boolean' },
84
85
  'idempotency-key': { type: 'string' }, 'max-credits': { type: 'string' }, params: { type: 'string' },
86
+ 'max-live-sends': { type: 'string' },
85
87
  approved: { type: 'boolean' }, 'approval-id': { type: 'string' }, 'approved-effect-unknown': { type: 'boolean' },
86
88
  'quote-hash': { type: 'string' }, 'turn-token': { type: 'string' },
87
89
  'wait-timeout': { type: 'string' }, 'no-wait': { type: 'boolean' }, 'json-output': { type: 'boolean' }, open: { type: 'boolean' }, help: { type: 'boolean', short: 'h' },
@@ -102,8 +104,12 @@ function buildPackParser(pack, kind, specs, usage) {
102
104
  const dryRun = values['dry-run'];
103
105
  const live = values.live;
104
106
  const idempotencyKey = values['idempotency-key'];
107
+ if (idempotencyKey !== undefined && idempotencyKey.length > runContract_1.IDEMPOTENCY_KEY_MAX_LENGTH) {
108
+ throw new errors_1.CliUsageError(`--idempotency-key must be at most ${runContract_1.IDEMPOTENCY_KEY_MAX_LENGTH} characters`);
109
+ }
105
110
  const rawParams = values.params;
106
111
  const rawMaxCredits = values['max-credits'];
112
+ const rawMaxLiveSends = values['max-live-sends'];
107
113
  const rawWaitTimeout = values['wait-timeout'];
108
114
  if (values.help)
109
115
  return { command: 'pack_help', usage, ...(values['json-output'] ? { jsonOutput: true } : {}) };
@@ -135,8 +141,11 @@ function buildPackParser(pack, kind, specs, usage) {
135
141
  const maxCredits = rawMaxCredits === undefined ? undefined : Number(rawMaxCredits);
136
142
  if (maxCredits !== undefined && (!Number.isFinite(maxCredits) || maxCredits < 0))
137
143
  throw new errors_1.CliUsageError('--max-credits must be a non-negative number');
144
+ const maxLiveSends = rawMaxLiveSends === undefined ? undefined : Number(rawMaxLiveSends);
145
+ if (maxLiveSends !== undefined && (!Number.isInteger(maxLiveSends) || maxLiveSends < 1))
146
+ throw new errors_1.CliUsageError('--max-live-sends must be an integer greater than or equal to 1');
138
147
  const quoteHash = values['quote-hash'];
139
- if (quoteHash !== undefined && !/^sha256:[a-f0-9]{64}$/.test(quoteHash))
148
+ if (quoteHash !== undefined && !runContract_1.QUOTE_HASH_PATTERN.test(quoteHash))
140
149
  throw new errors_1.CliUsageError('--quote-hash must be the sha256:<64 hex> quote_hash a dry run returned');
141
150
  const approvalId = values['approval-id'];
142
151
  if (approvalId !== undefined && !/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(approvalId))
@@ -156,6 +165,7 @@ function buildPackParser(pack, kind, specs, usage) {
156
165
  ...(values['turn-token'] ? { turnToken: values['turn-token'] } : {}),
157
166
  ...(idempotencyKey ? { idempotencyKey } : {}),
158
167
  ...(maxCredits === undefined ? {} : { maxCredits }), ...(values['json-output'] ? { jsonOutput: true } : {}),
168
+ ...(maxLiveSends === undefined ? {} : { maxLiveSends }),
159
169
  waitTimeout, ...(values['no-wait'] ? { noWait: true } : {}),
160
170
  ...(values.open ? { open: true } : {}),
161
171
  };
@@ -168,36 +178,10 @@ function buildPackParser(pack, kind, specs, usage) {
168
178
  * usefully, rather than to guess a valid sequence on the caller's behalf.
169
179
  */
170
180
  function packScaffold(kind, name) {
171
- // The step fields are FLAT and the step carries an id. An earlier scaffold nested
172
- // channel/action under `fields` and omitted the id, and the document it wrote was
173
- // refused by our own lint with `node_contract_unresolved: Node unknown has no
174
- // canonical node-contract mapping`, because canonicalSequenceStepContractNode reads
175
- // step.kind and step.action off the step itself. A scaffold whose output the next
176
- // command in its own printed next_steps rejects is worse than no scaffold.
181
+ // Empty graph. Step and node shapes belong to the server contract, not a second copy here.
177
182
  return kind === 'sequence'
178
- ? {
179
- kind: 'sequence',
180
- name,
181
- steps: [
182
- {
183
- id: 'step_1',
184
- kind: 'email',
185
- channel: 'email',
186
- action: 'send_email',
187
- subject_template: 'Quick question, {{first_name}}',
188
- body_template: 'Hi {{first_name}},\n\nWould this be useful to you?',
189
- },
190
- ],
191
- }
192
- : {
193
- kind: 'workflow',
194
- name,
195
- nodes: [
196
- { id: 'trigger-root', type: 'trigger', position: { x: 0, y: 0 }, data: { kind: 'trigger', subtype: 'table', config: {} } },
197
- { id: 'action-example', type: 'action', position: { x: 0, y: 160 }, data: { kind: 'action', subtype: 'send_connection_request_to_contact', config: {} } },
198
- ],
199
- edges: [{ id: 'edge-trigger-action', source: 'trigger-root', target: 'action-example' }],
200
- };
183
+ ? { kind: 'sequence', name, steps: [] }
184
+ : { kind: 'workflow', name, nodes: [], edges: [] };
201
185
  }
202
186
  function runPackInit(kind, command, stdout) {
203
187
  if (command.command !== 'pack')
@@ -254,7 +238,10 @@ async function runPackCommand(context, command, stdout) {
254
238
  const outcome = await (0, gatedRun_1.runGated)(context, {
255
239
  capabilityId: command.capabilityId,
256
240
  body: {
257
- params: command.input,
241
+ params: {
242
+ ...command.input,
243
+ ...(command.maxLiveSends === undefined ? {} : { max_live_sends: command.maxLiveSends }),
244
+ },
258
245
  ...(command.mode ? { mode: command.mode } : {}),
259
246
  ...(maxCredits === undefined ? {} : { max_credits: maxCredits }),
260
247
  ...(command.approved ? { approved: true } : {}),
@@ -267,16 +254,6 @@ async function runPackCommand(context, command, stdout) {
267
254
  waitTimeout: command.waitTimeout,
268
255
  ...(command.noWait ? { noWait: true } : {}),
269
256
  coerceParams: true,
270
- // Bridge for a capability that still lists max_credits among its params (contract C6 keeps
271
- // the ceiling at the door). The value is copied only while the live schema declares it, so
272
- // the day the catalog removes the param this stops sending it with no change here.
273
- adjustParams: (params, capability) => {
274
- const schema = capability?.input_json_schema;
275
- const properties = schema && typeof schema === 'object' ? schema.properties : undefined;
276
- return maxCredits !== undefined && properties && 'max_credits' in properties && params.max_credits === undefined
277
- ? { ...params, max_credits: maxCredits }
278
- : params;
279
- },
280
257
  });
281
258
  const result = outcome.value;
282
259
  if (outcome.timedOut)
@@ -284,7 +261,7 @@ async function runPackCommand(context, command, stdout) {
284
261
  const output = command.mode === 'dry_run' && result && typeof result === 'object' && !Array.isArray(result)
285
262
  ? { ...result, meta: { ...(result.meta ?? {}), dry_run: true, note: 'dry_run: true, rerun with --live to apply' } }
286
263
  : result;
287
- stdout.write(`${JSON.stringify(output, null, command.jsonOutput ? 0 : 2)}\n`);
264
+ stdout.write(`${JSON.stringify((0, money_1.scrubCliOutput)(output), null, command.jsonOutput ? 0 : 2)}\n`);
288
265
  if (!command.jsonOutput) {
289
266
  const root = result && typeof result === 'object' ? result : {};
290
267
  const webUrl = root.web_url ?? root.data?.web_url;
@@ -1,7 +1,8 @@
1
- import { runPackCommand, type PackVerbSpec } from './shared';
1
+ import { type PackVerbSpec } from './shared';
2
2
  import type { CliCommand } from '../index';
3
+ import type { GatedRunContext } from '../gatedRun';
3
4
  export declare const WORKFLOW_VERBS: PackVerbSpec[];
4
5
  export declare const WORKFLOWS_USAGE: string;
5
6
  export declare const parseWorkflowsCommand: (argv: string[]) => CliCommand;
6
- export declare function runWorkflowsCommand(context: Parameters<typeof runPackCommand>[0], command: CliCommand, stdout: NodeJS.WritableStream): Promise<void>;
7
+ export declare function runWorkflowsCommand(context: GatedRunContext | undefined, command: CliCommand, stdout: NodeJS.WritableStream): Promise<void>;
7
8
  //# sourceMappingURL=workflows.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../src/commands/workflows.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,cAAc,EAAe,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AAC5G,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAO3C,eAAO,MAAM,cAAc,EAAE,YAAY,EA4BxC,CAAC;AAEF,eAAO,MAAM,eAAe,QAA+C,CAAC;AAC5E,eAAO,MAAM,qBAAqB,gCAA4E,CAAC;AAC/G,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAG1J"}
1
+ {"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../src/commands/workflows.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiE,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AAC5G,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAInD,eAAO,MAAM,cAAc,EAAE,YAAY,EAMpC,CAAC;AAEN,eAAO,MAAM,eAAe,QAA+C,CAAC;AAC5E,eAAO,MAAM,qBAAqB,gCAA4E,CAAC;AAC/G,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,eAAe,GAAG,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAQjJ"}
@@ -1,45 +1,29 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.parseWorkflowsCommand = exports.WORKFLOWS_USAGE = exports.WORKFLOW_VERBS = void 0;
4
7
  exports.runWorkflowsCommand = runWorkflowsCommand;
5
8
  const shared_1 = require("./shared");
6
- const automation = [{ name: 'id', into: 'automation_id' }];
7
- const workflow = [{ name: 'id', into: 'workflow_id' }];
8
- // Route map only. `tools get` owns every remote parameter, type, requirement and
9
- // description. Positionals are documented CLI aliases for canonical input fields.
10
- exports.WORKFLOW_VERBS = [
11
- { verb: 'list', capabilityId: 'workflow.automations.list' },
12
- { verb: 'init', capabilityId: 'workflow.automations.lint', local: 'init' },
13
- { verb: 'get', capabilityId: 'workflow.automations.get', positional: automation },
14
- { verb: 'create', capabilityId: 'workflow.automations.compose' },
15
- { verb: 'update', capabilityId: 'workflow.automations.update', positional: automation },
16
- { verb: 'lint', capabilityId: 'workflow.automations.lint', positional: automation },
17
- { verb: 'preview', capabilityId: 'workflow.automations.preview', positional: automation },
18
- { verb: 'variables', capabilityId: 'workflow.automations.variables_list', positional: automation },
19
- { verb: 'node-catalog', capabilityId: 'workflow.automations.node_catalog' },
20
- { verb: 'node-inspect', capabilityId: 'workflow.automations.node_inspect' },
21
- { verb: 'node-add', capabilityId: 'workflow.automations.node_add', positional: automation },
22
- { verb: 'node-patch', capabilityId: 'workflow.automations.node_patch', positional: automation },
23
- { verb: 'node-remove', capabilityId: 'workflow.automations.node_remove', positional: automation },
24
- { verb: 'node-move', capabilityId: 'workflow.automations.node_move', positional: automation },
25
- { verb: 'field-options', capabilityId: 'workflow.automations.field_options' },
26
- { verb: 'draft-save', capabilityId: 'workflow.workflows.draft_save', positional: workflow },
27
- { verb: 'publish', capabilityId: 'workflow.workflows.draft_publish', positional: workflow },
28
- { verb: 'activate', capabilityId: 'workflow.workflows.activate', positional: workflow },
29
- { verb: 'deactivate', capabilityId: 'workflow.workflows.deactivate', positional: workflow },
30
- { verb: 'enroll', capabilityId: 'workflow.workflows.enroll_selection', positional: workflow },
31
- { verb: 'runs', capabilityId: 'workflow.workflows.runs_list', positional: workflow },
32
- { verb: 'run', capabilityId: 'workflow.workflows.run_trace_get', positional: workflow },
33
- { verb: 'retry', capabilityId: 'workflow.workflows.run_retry', positional: workflow },
34
- { verb: 'duplicate', capabilityId: 'workflow.automations.duplicate', positional: automation },
35
- { verb: 'archive', capabilityId: 'workflow.automations.archive', positional: automation },
36
- { verb: 'export', capabilityId: 'workflow.automations.export', positional: automation },
37
- { verb: 'import', capabilityId: 'workflow.automations.import' },
38
- ];
9
+ const errors_1 = require("../errors");
10
+ const packVerbs_generated_json_1 = __importDefault(require("../generated/packVerbs.generated.json"));
11
+ exports.WORKFLOW_VERBS = packVerbs_generated_json_1.default.verbs
12
+ .filter(({ command }) => command.startsWith('workflows '))
13
+ .map(({ command, capabilityId, positional, local }) => ({
14
+ verb: command.slice('workflows '.length), capabilityId,
15
+ ...(positional ? { positional } : {}),
16
+ ...(local === 'init' ? { local: 'init' } : {}),
17
+ }));
39
18
  exports.WORKFLOWS_USAGE = (0, shared_1.renderPackUsage)('workflows', exports.WORKFLOW_VERBS);
40
19
  exports.parseWorkflowsCommand = (0, shared_1.buildPackParser)('workflows', 'workflow', exports.WORKFLOW_VERBS, exports.WORKFLOWS_USAGE);
41
20
  async function runWorkflowsCommand(context, command, stdout) {
42
- if (command.command === 'pack' && command.verb === 'init')
43
- return (0, shared_1.runPackInit)('workflow', command, stdout);
21
+ // init writes a local file and calls no API, so it has no gated context.
22
+ if (command.command === 'pack' && command.verb === 'init') {
23
+ (0, shared_1.runPackInit)('workflow', command, stdout);
24
+ return;
25
+ }
26
+ if (!context)
27
+ throw new errors_1.CliUsageError('workflows commands other than init require an authenticated session.');
44
28
  await (0, shared_1.runPackCommand)(context, command, stdout);
45
29
  }
package/dist/config.d.ts CHANGED
@@ -40,7 +40,11 @@ export declare function removeCredentialProfile(name: string, path?: string): Pr
40
40
  */
41
41
  export declare function readStoredCredentials(path: string): Promise<StoredCredentials | null>;
42
42
  export declare function resolveApiKey(environment?: NodeJS.ProcessEnv, path?: string): Promise<string>;
43
- /** Workspace precedence: --workspace flag, then DREAMSTATE_WORKSPACE, then the stored default. */
43
+ /**
44
+ * Workspace precedence: --workspace flag, then DREAMSTATE_WORKSPACE, then the
45
+ * stored default for the same token. DREAMSTATE_API_KEY replaces the stored
46
+ * token, so a different key must not inherit the other credential's workspace.
47
+ */
44
48
  export declare function resolveWorkspace(flag: string | undefined, environment?: NodeJS.ProcessEnv, path?: string): Promise<string | undefined>;
45
49
  export declare function readApiKeyFile(path: string): Promise<string>;
46
50
  export declare function storeApiKey(apiKey: string, path?: string, workspace?: string | null): Promise<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,IAAI,qBAAqB;gBAEtB,OAAO,SAA8C;CAIlE;AAED,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,IAAI,qBAAqB;gBAEtB,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,IAAI,uBAAuB;gBACxB,OAAO,EAAE,MAAM;CAC5B;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,IAAI,uBAAuB;gBAGlC,OAAO,SAA6E;CAKvF;AAED,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAgB,eAAe,CAC7B,aAAa,SAAY,EACzB,WAAW,GAAE,MAAM,CAAC,UAAwB,GAC3C,MAAM,CAGR;AAED,wBAAgB,iBAAiB,CAAC,WAAW,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CA+BtF;AAWD,eAAO,MAAM,gBAAgB,mCAAoC,CAAC;AAElE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAkB,SAAQ,iBAAiB;IAC1D,IAAI,EAAE,MAAM,CAAC;CACd;AAID,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIxD;AAcD,wBAAsB,wBAAwB,CAAC,IAAI,SAAoB,EAAE,WAAW,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAU7I;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAShG;AAED,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,CAGzH;AAED,wBAAsB,sBAAsB,CAAC,IAAI,SAAoB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAanG;AAED,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,CAUtG;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAoB3F;AAED,wBAAsB,aAAa,CACjC,WAAW,GAAE,MAAM,CAAC,UAAwB,EAC5C,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,CAOjB;AAED,kGAAkG;AAClG,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,WAAW,GAAE,MAAM,CAAC,UAAwB,EAC5C,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAO7B;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBlE;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,SAAoB,EAAE,SAAS,GAAE,MAAM,GAAG,IAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAW5H;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,SAAoB,EAAE,SAAS,GAAE,MAAM,GAAG,IAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAIrJ"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,IAAI,qBAAqB;gBAEtB,OAAO,SAA8C;CAIlE;AAED,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,IAAI,qBAAqB;gBAEtB,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,IAAI,uBAAuB;gBACxB,OAAO,EAAE,MAAM;CAC5B;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,IAAI,uBAAuB;gBAGlC,OAAO,SAA6E;CAKvF;AAED,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAgB,eAAe,CAC7B,aAAa,SAAY,EACzB,WAAW,GAAE,MAAM,CAAC,UAAwB,GAC3C,MAAM,CAGR;AAED,wBAAgB,iBAAiB,CAAC,WAAW,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CA+BtF;AAWD,eAAO,MAAM,gBAAgB,mCAAoC,CAAC;AAElE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAkB,SAAQ,iBAAiB;IAC1D,IAAI,EAAE,MAAM,CAAC;CACd;AAID,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIxD;AAcD,wBAAsB,wBAAwB,CAAC,IAAI,SAAoB,EAAE,WAAW,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAU7I;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAShG;AAED,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,CAGzH;AAED,wBAAsB,sBAAsB,CAAC,IAAI,SAAoB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAanG;AAED,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,CAUtG;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAoB3F;AAED,wBAAsB,aAAa,CACjC,WAAW,GAAE,MAAM,CAAC,UAAwB,EAC5C,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,CAOjB;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,WAAW,GAAE,MAAM,CAAC,UAAwB,EAC5C,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAW7B;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBlE;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,SAAoB,EAAE,SAAS,GAAE,MAAM,GAAG,IAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAW5H;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,SAAoB,EAAE,SAAS,GAAE,MAAM,GAAG,IAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAIrJ"}
package/dist/config.js CHANGED
@@ -230,7 +230,11 @@ async function resolveApiKey(environment = process.env, path) {
230
230
  return stored.token;
231
231
  throw new MissingApiKeyError();
232
232
  }
233
- /** Workspace precedence: --workspace flag, then DREAMSTATE_WORKSPACE, then the stored default. */
233
+ /**
234
+ * Workspace precedence: --workspace flag, then DREAMSTATE_WORKSPACE, then the
235
+ * stored default for the same token. DREAMSTATE_API_KEY replaces the stored
236
+ * token, so a different key must not inherit the other credential's workspace.
237
+ */
234
238
  async function resolveWorkspace(flag, environment = process.env, path) {
235
239
  const fromFlag = flag?.trim();
236
240
  if (fromFlag)
@@ -239,7 +243,13 @@ async function resolveWorkspace(flag, environment = process.env, path) {
239
243
  if (fromEnvironment)
240
244
  return fromEnvironment;
241
245
  const credentials = await selectedCredentialsPath(path ?? credentialsPath(undefined, environment), environment);
242
- return (await readStoredCredentials(credentials))?.workspace ?? undefined;
246
+ const stored = await readStoredCredentials(credentials);
247
+ if (!stored?.workspace)
248
+ return undefined;
249
+ const environmentKey = environment.DREAMSTATE_API_KEY?.trim();
250
+ if (environmentKey && environmentKey !== stored.token)
251
+ return undefined;
252
+ return stored.workspace;
243
253
  }
244
254
  async function readApiKeyFile(path) {
245
255
  let file;
package/dist/errors.d.ts CHANGED
@@ -6,7 +6,7 @@ export declare class CliUsageError extends Error {
6
6
  * with a major version. `dreamstate --help` renders their stable meanings.
7
7
  *
8
8
  * Contract C5 (cross-surface): 0 ok, 1 generic, 2 usage, 3 auth, 4 not found,
9
- * 5 conflict/validation, 6 rate limited, 7 approval/consent/spend gate required,
9
+ * 5 conflict/validation, 6 rate limited, 7 repair.kind ask_user (a person must decide),
10
10
  * 8 cli_update_required, 9 other refusal. Where this CLI had already published a
11
11
  * different meaning it kept the published one and the mapping is documented:
12
12
  *
@@ -52,10 +52,6 @@ export declare const CLI_LOCAL_ERROR_REPAIRS: {
52
52
  readonly kind: "server_defect";
53
53
  readonly hint: "The API response was not a Dreamstate envelope; report the trace id if one was returned.";
54
54
  };
55
- readonly invalid_tool_turn_token: {
56
- readonly kind: "server_defect";
57
- readonly hint: "The API did not provide a runnable tool turn; retry after reporting the response trace id.";
58
- };
59
55
  readonly invalid_web_url: {
60
56
  readonly kind: "server_defect";
61
57
  readonly hint: "The API returned an invalid web URL; report the response trace id.";
@@ -73,6 +69,6 @@ export declare const CLI_LOCAL_ERROR_REPAIRS: {
73
69
  readonly hint: "Sign in with dreamstate login, then retry.";
74
70
  };
75
71
  };
76
- export declare function isApprovalGateCode(code: string | undefined): boolean;
72
+ export declare function isApprovalRepair(error: unknown): boolean;
77
73
  export declare function isLocalRefusalCode(code: string | undefined): boolean;
78
74
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,aAAc,SAAQ,KAAK;gBAC1B,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;CAaX,CAAC;AAEX;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CASlE,CAAC;AAEF,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAS1B,CAAC;AAyCX,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAEpE;AAQD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAEpE"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,aAAc,SAAQ,KAAK;gBAC1B,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;CAaX,CAAC;AAEX;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQlE,CAAC;AAEF,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAQ1B,CAAC;AAEX,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMxD;AAQD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAEpE"}
package/dist/errors.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CLI_LOCAL_ERROR_REPAIRS = exports.CLI_LOCAL_ERROR_CODES = exports.CLI_EXIT = exports.CliUsageError = void 0;
4
- exports.isApprovalGateCode = isApprovalGateCode;
4
+ exports.isApprovalRepair = isApprovalRepair;
5
5
  exports.isLocalRefusalCode = isLocalRefusalCode;
6
6
  class CliUsageError extends Error {
7
7
  constructor(message) {
@@ -15,7 +15,7 @@ exports.CliUsageError = CliUsageError;
15
15
  * with a major version. `dreamstate --help` renders their stable meanings.
16
16
  *
17
17
  * Contract C5 (cross-surface): 0 ok, 1 generic, 2 usage, 3 auth, 4 not found,
18
- * 5 conflict/validation, 6 rate limited, 7 approval/consent/spend gate required,
18
+ * 5 conflict/validation, 6 rate limited, 7 repair.kind ask_user (a person must decide),
19
19
  * 8 cli_update_required, 9 other refusal. Where this CLI had already published a
20
20
  * different meaning it kept the published one and the mapping is documented:
21
21
  *
@@ -50,7 +50,6 @@ exports.CLI_LOCAL_ERROR_CODES = {
50
50
  network_error: 'The request never reached the server (DNS, connection refused, TLS). Nothing executed.',
51
51
  request_timeout: 'The server did not answer in time. The effect may have happened. Read the target back first. If the effect is there, report it done. If not, repeat the identical call once with the first attempt\'s idempotency key, never a new one. If the read-back is inconclusive, or the repeat is refused pending acknowledgement, ask the person.',
52
52
  invalid_response: 'The server answered with something that is not a Dreamstate envelope.',
53
- invalid_tool_turn_token: 'tools get returned no tool_turn_token to run with.',
54
53
  invalid_web_url: 'The API returned a web_url that is not a safe http(s) URL.',
55
54
  web_url_unavailable: '--open was given but the response carries no web_url.',
56
55
  plugin_install_failed: 'dreamstate install could not install the plugin for any agent.',
@@ -61,51 +60,19 @@ exports.CLI_LOCAL_ERROR_REPAIRS = {
61
60
  network_error: { kind: 'wait', hint: 'Retry the unchanged request when network connectivity is available.' },
62
61
  request_timeout: { kind: 'ask_user', hint: 'Read the target back first. If absent, repeat once with the same idempotency key; otherwise ask the person.' },
63
62
  invalid_response: { kind: 'server_defect', hint: 'The API response was not a Dreamstate envelope; report the trace id if one was returned.' },
64
- invalid_tool_turn_token: { kind: 'server_defect', hint: 'The API did not provide a runnable tool turn; retry after reporting the response trace id.' },
65
63
  invalid_web_url: { kind: 'server_defect', hint: 'The API returned an invalid web URL; report the response trace id.' },
66
64
  web_url_unavailable: { kind: 'not_possible', hint: 'This result has no web URL to open.' },
67
65
  plugin_install_failed: { kind: 'ask_user', hint: 'Install a supported agent, then retry plugin installation.' },
68
66
  skills_authentication_required: { kind: 'ask_user', hint: 'Sign in with dreamstate login, then retry.' },
69
67
  };
70
- /**
71
- * Refusals that mean a person (or the caller's own spend decision) must supply
72
- * something before the run can proceed: an approval, a consent, a quote or a
73
- * spend ceiling. They exit 7, whatever HTTP status carried them, so a script
74
- * can stop and ask instead of retrying.
75
- */
76
- const GATE_CODES = new Set([
77
- 'approval_required',
78
- 'standing_approval_required',
79
- 'destructive_approval_required',
80
- 'owner_approval_required',
81
- 'knowledge_approval_required',
82
- 'content_approval_required',
83
- 'effect_unknown_approval_required',
84
- 'approval_cap_exceeded',
85
- 'approval_stale',
86
- 'agent_tool_policy_ask_before_changes',
87
- 'publish_confirmation_required',
88
- 'launch_authorization_required',
89
- 'publish_permission_required',
90
- 'delegation_grant_required',
91
- 'creator_consent_required',
92
- 'csv_replace_confirmation_required',
93
- 'quote_required',
94
- 'quote_mismatch',
95
- 'quote_stale',
96
- 'quote_already_used',
97
- 'spend_cap',
98
- 'spend_cap_required',
99
- 'spend_cap_too_low',
100
- 'cost_cap_exceeded',
101
- 'agent_paid_capability_requires_max_credits',
102
- 'max_rows_required',
103
- 'mode_required',
104
- 'sequence_send_cap_required',
105
- ]);
106
- const GATE_CODE_PATTERN = /(?:approval|consent|confirmation|authorization)_required$|requires_approval$/;
107
- function isApprovalGateCode(code) {
108
- return Boolean(code) && (GATE_CODES.has(code) || GATE_CODE_PATTERN.test(code));
68
+ function isApprovalRepair(error) {
69
+ if (!error || typeof error !== 'object')
70
+ return false;
71
+ const repair = error.repair;
72
+ if (!repair || typeof repair !== 'object')
73
+ return false;
74
+ const kind = repair.kind;
75
+ return kind === 'ask_user';
109
76
  }
110
77
  /**
111
78
  * Refusals the CLI decides locally, before running anything, that are not usage
@@ -1,8 +1,6 @@
1
1
  import { CliError, type DreamstateClient } from './client';
2
2
  import { type IdempotencyIdentity } from './idempotency';
3
3
  export declare function code(error: unknown): string | undefined;
4
- export declare function toolTurnToken(value: unknown): string;
5
- export declare function omitsToolTurnForInlineTableRead(capabilityId: string): boolean;
6
4
  /** The capability record inside a tools get response, or null when the shape is unknown. */
7
5
  export declare function capabilityRecord(fetched: unknown): Record<string, unknown> | null;
8
6
  /**
@@ -76,6 +74,8 @@ export interface GatedRunOutcome {
76
74
  turnToken: string | null;
77
75
  }
78
76
  export declare function runGated(context: GatedRunContext, input: GatedRunInput): Promise<GatedRunOutcome>;
77
+ /** Blocker refusal for a run envelope that did not go through runGated (runs wait). */
78
+ export declare function refusalFromRunResult(value: unknown): CliError | null;
79
79
  /** A read the CLI needs before it can form a write, run through the same gate as any other run. */
80
80
  export declare function readCapability(context: GatedRunContext, capabilityId: string, params: Record<string, unknown>, waitTimeout: number): Promise<unknown>;
81
81
  //# sourceMappingURL=gatedRun.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gatedRun.d.ts","sourceRoot":"","sources":["../src/gatedRun.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gatedRun.d.ts","sourceRoot":"","sources":["../src/gatedRun.ts"],"names":[],"mappings":"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"}