@lumenflow/cli 3.9.5 → 3.9.7

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.
@@ -11,13 +11,43 @@ import { readFile } from 'node:fs/promises';
11
11
  import { parseYAML } from '@lumenflow/core/wu-yaml';
12
12
  import { getGitForCwd } from '@lumenflow/core/git-adapter';
13
13
  import { die, getErrorMessage } from '@lumenflow/core/error-handler';
14
- import { BRANCHES, REMOTES, LOG_PREFIX, COMMIT_FORMATS, FILE_SYSTEM, } from '@lumenflow/core/wu-constants';
14
+ import { BRANCHES, REMOTES, LOG_PREFIX, COMMIT_FORMATS, CLAIMED_MODES, FILE_SYSTEM, } from '@lumenflow/core/wu-constants';
15
15
  import { shouldSkipRemoteOperations } from '@lumenflow/core/micro-worktree';
16
16
  import { emitMandatoryAgentAdvisory } from '@lumenflow/core/orchestration-advisory-loader';
17
17
  import { updateWUYaml, addOrReplaceInProgressStatus, removeFromReadyAndAddToInProgressBacklog, maybeProgressInitiativeStatus, ensureCleanOrClaimOnlyWhenNoAuto, } from './wu-claim-state.js';
18
18
  import { shouldPersistClaimMetadataOnBranch } from './wu-claim-state.js';
19
19
  import { surfaceUnreadSignalsForDisplay, printLifecycleNudge } from './wu-claim-output.js';
20
20
  const PREFIX = LOG_PREFIX.CLAIM;
21
+ /**
22
+ * WU-2306: Branch claim mode label for operator-facing output.
23
+ */
24
+ export function getBranchModeDisplayLabel(claimedMode) {
25
+ return claimedMode === CLAIMED_MODES.BRANCH_PR
26
+ ? 'Branch-PR (no worktree)'
27
+ : 'Branch-Only (no worktree)';
28
+ }
29
+ /**
30
+ * WU-2306: Mode-aware next-step guidance for branch claim flows.
31
+ *
32
+ * Branch-PR follows wu:prep -> wu:done in the active branch.
33
+ * Branch-Only keeps legacy gates -> wu:done guidance.
34
+ */
35
+ export function getBranchClaimNextSteps(id, claimedMode) {
36
+ if (claimedMode === CLAIMED_MODES.BRANCH_PR) {
37
+ return [
38
+ ' 1. Work on this branch in the main checkout',
39
+ ' 2. Implement changes per acceptance criteria',
40
+ ` 3. Run: pnpm wu:prep --id ${id}`,
41
+ ` 4. Run: pnpm wu:done --id ${id} (creates PR in branch-pr mode)`,
42
+ ];
43
+ }
44
+ return [
45
+ ' 1. Work on this branch in the main checkout',
46
+ ' 2. Implement changes per acceptance criteria',
47
+ ' 3. Run: pnpm gates',
48
+ ` 4. pnpm wu:done --id ${id}`,
49
+ ];
50
+ }
21
51
  /**
22
52
  * Execute branch-only mode claim workflow
23
53
  */
@@ -92,17 +122,18 @@ export async function claimBranchOnlyMode(ctx) {
92
122
  const wuDisplay = finalTitle ? `- WU: ${id} — ${finalTitle}` : `- WU: ${id}`;
93
123
  console.log(wuDisplay);
94
124
  console.log(`- Lane: ${args.lane}`);
95
- console.log(`- Mode: Branch-Only (no worktree)`);
125
+ console.log(`- Mode: ${getBranchModeDisplayLabel(claimedMode)}`);
96
126
  const refDisplay = args.noPush ? `- Commit: ${msg}` : `- Branch: ${branch}`;
97
127
  console.log(refDisplay);
98
- console.log('\n⚠️ LIMITATION: Branch-Only mode does not support parallel WUs (WIP=1 across ALL lanes)');
128
+ if (claimedMode === CLAIMED_MODES.BRANCH_ONLY) {
129
+ console.log('\n⚠️ LIMITATION: Branch-Only mode does not support parallel WUs (WIP=1 across ALL lanes)');
130
+ }
99
131
  console.log('Next: work on this branch in the main checkout.');
100
132
  // WU-1360: Print next-steps checklist to prevent common mistakes
101
133
  console.log(`\n${PREFIX} Next steps:`);
102
- console.log(` 1. Work on this branch in the main checkout`);
103
- console.log(` 2. Implement changes per acceptance criteria`);
104
- console.log(` 3. Run: pnpm gates`);
105
- console.log(` 4. pnpm wu:done --id ${id}`);
134
+ for (const step of getBranchClaimNextSteps(id, claimedMode)) {
135
+ console.log(step);
136
+ }
106
137
  console.log(`\n${PREFIX} Common mistakes to avoid:`);
107
138
  console.log(` - Don't manually edit WU YAML status fields`);
108
139
  console.log(` - Don't create PRs (trunk-based development)`);
@@ -1 +1 @@
1
- {"version":3,"file":"wu-claim-branch.js","sourceRoot":"","sources":["../src/wu-claim-branch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wu-claim-branch.js","sourceRoot":"","sources":["../src/wu-claim-branch.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,21 @@ const PNPM_BINARY_NAME = 'pnpm';
26
26
  const PNPM_FROZEN_LOCKFILE_ARGS = ['install', '--frozen-lockfile'];
27
27
  const WORKTREE_INSTALL_TIMEOUT_MS = 300000;
28
28
  const WORKTREE_SETUP_WARNING_PREVIEW_COUNT = 3;
29
+ /**
30
+ * WU-2306: Canonical next-step guidance for worktree claims.
31
+ *
32
+ * Two-step completion is mandatory:
33
+ * 1) wu:prep from worktree
34
+ * 2) wu:done from main (using wu:prep output)
35
+ */
36
+ export function getWorktreeClaimNextSteps(worktree, originalCwd, id) {
37
+ return [
38
+ ` 1. cd ${worktree} (IMPORTANT: work here, not main)`,
39
+ ' 2. Implement changes per acceptance criteria',
40
+ ` 3. Run: pnpm wu:prep --id ${id}`,
41
+ ` 4. Copy and run the wu:done command printed by wu:prep (from main): cd ${originalCwd} && pnpm wu:done --id ${id}`,
42
+ ];
43
+ }
29
44
  /**
30
45
  * WU-1213: Handle local-only claim metadata update (noPush mode).
31
46
  * Extracted to reduce cognitive complexity of claimWorktreeMode.
@@ -206,10 +221,9 @@ export async function claimWorktreeMode(ctx) {
206
221
  console.log(`Next: cd ${worktree} and begin work.`);
207
222
  // WU-1360: Print next-steps checklist to prevent common mistakes
208
223
  console.log(`\n${PREFIX} Next steps:`);
209
- console.log(` 1. cd ${worktree} (IMPORTANT: work here, not main)`);
210
- console.log(` 2. Implement changes per acceptance criteria`);
211
- console.log(` 3. Run: pnpm gates`);
212
- console.log(` 4. cd ${originalCwd} && pnpm wu:done --id ${id}`);
224
+ for (const step of getWorktreeClaimNextSteps(worktree, originalCwd, id)) {
225
+ console.log(step);
226
+ }
213
227
  console.log(`\n${PREFIX} Common mistakes to avoid:`);
214
228
  console.log(` - Don't edit files on main branch`);
215
229
  console.log(` - Don't manually edit WU YAML status fields`);
@@ -1 +1 @@
1
- {"version":3,"file":"wu-claim-worktree.js","sourceRoot":"","sources":["../src/wu-claim-worktree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wu-claim-worktree.js","sourceRoot":"","sources":["../src/wu-claim-worktree.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lumenflow/cli",
3
- "version": "3.9.5",
3
+ "version": "3.9.7",
4
4
  "description": "Command-line interface for LumenFlow workflow framework",
5
5
  "keywords": [
6
6
  "lumenflow",
@@ -180,13 +180,13 @@
180
180
  "xstate": "^5.28.0",
181
181
  "yaml": "^2.8.2",
182
182
  "zod": "^4.3.6",
183
- "@lumenflow/agent": "3.9.5",
184
- "@lumenflow/initiatives": "3.9.5",
185
- "@lumenflow/kernel": "3.9.5",
186
- "@lumenflow/memory": "3.9.5",
187
- "@lumenflow/control-plane-sdk": "3.9.5",
188
- "@lumenflow/metrics": "3.9.5",
189
- "@lumenflow/core": "3.9.5"
183
+ "@lumenflow/agent": "3.9.7",
184
+ "@lumenflow/initiatives": "3.9.7",
185
+ "@lumenflow/control-plane-sdk": "3.9.7",
186
+ "@lumenflow/core": "3.9.7",
187
+ "@lumenflow/kernel": "3.9.7",
188
+ "@lumenflow/memory": "3.9.7",
189
+ "@lumenflow/metrics": "3.9.7"
190
190
  },
191
191
  "devDependencies": {
192
192
  "@vitest/coverage-v8": "^4.0.18",
@@ -1,4 +1,4 @@
1
1
 
2
- > @lumenflow/packs-sidekick@3.9.4 build /home/tom/source/hellmai/lumenflow-dev/packages/@lumenflow/packs/sidekick
2
+ > @lumenflow/packs-sidekick@3.9.6 build /home/tom/source/hellmai/lumenflow-dev/packages/@lumenflow/packs/sidekick
3
3
  > tsc
4
4
 
@@ -182,9 +182,11 @@ const TOOL_INPUT_SCHEMAS: Record<SidekickToolName, Record<string, unknown>> = {
182
182
  'channel:send': {
183
183
  type: 'object',
184
184
  properties: {
185
+ provider: { type: 'string' },
185
186
  channel: { type: 'string' },
186
187
  content: { type: 'string', minLength: 1 },
187
188
  sender: { type: 'string' },
189
+ metadata: { type: 'object', additionalProperties: true },
188
190
  dry_run: { type: 'boolean' },
189
191
  },
190
192
  required: ['content'],
@@ -193,9 +195,12 @@ const TOOL_INPUT_SCHEMAS: Record<SidekickToolName, Record<string, unknown>> = {
193
195
  'channel:receive': {
194
196
  type: 'object',
195
197
  properties: {
198
+ provider: { type: 'string' },
196
199
  channel: { type: 'string' },
200
+ cursor: { type: 'string' },
197
201
  limit: { type: 'integer', minimum: 1 },
198
202
  since: { type: 'string' },
203
+ metadata: { type: 'object', additionalProperties: true },
199
204
  },
200
205
  additionalProperties: false,
201
206
  },
@@ -235,6 +235,8 @@ tools:
235
235
  input_schema:
236
236
  type: object
237
237
  properties:
238
+ provider:
239
+ type: string
238
240
  channel:
239
241
  type: string
240
242
  content:
@@ -242,6 +244,9 @@ tools:
242
244
  minLength: 1
243
245
  sender:
244
246
  type: string
247
+ metadata:
248
+ type: object
249
+ additionalProperties: true
245
250
  dry_run:
246
251
  type: boolean
247
252
  required: [content]
@@ -259,13 +264,20 @@ tools:
259
264
  input_schema:
260
265
  type: object
261
266
  properties:
267
+ provider:
268
+ type: string
262
269
  channel:
263
270
  type: string
271
+ cursor:
272
+ type: string
264
273
  limit:
265
274
  type: integer
266
275
  minimum: 1
267
276
  since:
268
277
  type: string
278
+ metadata:
279
+ type: object
280
+ additionalProperties: true
269
281
  additionalProperties: false
270
282
  output_schema:
271
283
  type: object
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lumenflow/packs-sidekick",
3
- "version": "3.9.5",
3
+ "version": "3.9.7",
4
4
  "description": "Sidekick personal assistant pack for LumenFlow — 16 tools for task management, typed memory, channels, routines, and audit",
5
5
  "keywords": [
6
6
  "lumenflow",
@@ -27,6 +27,7 @@
27
27
  "./storage": "./dist/tool-impl/storage.js",
28
28
  "./tools": "./dist/tools/index.js",
29
29
  "./tool-impl": "./dist/tool-impl/index.js",
30
+ "./tool-impl/channel-transports": "./dist/tool-impl/channel-transports.js",
30
31
  "./tool-impl/channel-tools": "./dist/tool-impl/channel-tools.js",
31
32
  "./tool-impl/memory-tools": "./dist/tool-impl/memory-tools.js",
32
33
  "./tool-impl/routine-tools": "./dist/tool-impl/routine-tools.js",
@@ -1,6 +1,7 @@
1
1
  // Copyright (c) 2026 Hellmai Ltd
2
2
  // SPDX-License-Identifier: AGPL-3.0-only
3
3
 
4
+ import { getChannelTransport } from './channel-transports.js';
4
5
  import { getStoragePort, type ChannelMessageRecord, type ChannelRecord } from './storage.js';
5
6
  import {
6
7
  asInteger,
@@ -29,6 +30,26 @@ const TOOL_NAMES = {
29
30
  const OUTBOX_CAP = 100;
30
31
  const DEFAULT_CHANNEL_NAME = 'default';
31
32
 
33
+ function asOptionalRecord(value: unknown): Record<string, unknown> | undefined {
34
+ if (!value || typeof value !== 'object' || Array.isArray(value)) {
35
+ return undefined;
36
+ }
37
+ return value as Record<string, unknown>;
38
+ }
39
+
40
+ function withTransportMetadata<T extends Record<string, unknown>>(
41
+ data: T,
42
+ metadata: Record<string, unknown> | undefined,
43
+ ): T & Record<string, unknown> {
44
+ if (!metadata) {
45
+ return data;
46
+ }
47
+ return {
48
+ ...data,
49
+ metadata,
50
+ };
51
+ }
52
+
32
53
  // ---------------------------------------------------------------------------
33
54
  // channel:configure
34
55
  // ---------------------------------------------------------------------------
@@ -99,6 +120,77 @@ async function channelConfigureTool(
99
120
  // channel:send
100
121
  // ---------------------------------------------------------------------------
101
122
 
123
+ async function channelSendViaTransport(
124
+ input: Record<string, unknown>,
125
+ context: ToolContextLike | undefined,
126
+ provider: string,
127
+ channel: string,
128
+ content: string,
129
+ ): Promise<ToolOutput> {
130
+ const workspaceId = asNonEmptyString(context?.workspace_id);
131
+ if (!workspaceId) {
132
+ return failure(
133
+ 'WORKSPACE_CONTEXT_REQUIRED',
134
+ 'workspace_id is required when provider is specified.',
135
+ );
136
+ }
137
+
138
+ const transport = getChannelTransport(provider);
139
+ if (!transport) {
140
+ return failure(
141
+ 'INTEGRATION_PROVIDER_NOT_REGISTERED',
142
+ `No channel transport registered for provider: ${provider}`,
143
+ );
144
+ }
145
+
146
+ if (isDryRun(input)) {
147
+ return success({
148
+ dry_run: true,
149
+ provider,
150
+ capability: 'send',
151
+ channel,
152
+ content,
153
+ });
154
+ }
155
+
156
+ const transportResult = await transport.send({
157
+ workspaceId,
158
+ provider,
159
+ channel,
160
+ content,
161
+ metadata: asOptionalRecord(input.metadata),
162
+ });
163
+
164
+ const outputData = withTransportMetadata(
165
+ {
166
+ provider,
167
+ capability: 'send',
168
+ channel,
169
+ ...(transportResult.externalMessageId !== undefined
170
+ ? { externalMessageId: transportResult.externalMessageId }
171
+ : {}),
172
+ ...(transportResult.failureClass ? { failureClass: transportResult.failureClass } : {}),
173
+ ...(transportResult.retryAfterSeconds !== undefined
174
+ ? { retryAfterSeconds: transportResult.retryAfterSeconds }
175
+ : {}),
176
+ },
177
+ transportResult.metadata,
178
+ );
179
+
180
+ if (!transportResult.success) {
181
+ return {
182
+ success: false,
183
+ error: {
184
+ code: 'INTEGRATION_PROVIDER_SEND_FAILED',
185
+ message: transportResult.error ?? `Provider send failed for provider: ${provider}`,
186
+ },
187
+ data: outputData,
188
+ };
189
+ }
190
+
191
+ return success(outputData);
192
+ }
193
+
102
194
  async function channelSendTool(input: unknown, context?: ToolContextLike): Promise<ToolOutput> {
103
195
  const parsed = toRecord(input);
104
196
  const content = asNonEmptyString(parsed.content);
@@ -108,6 +200,12 @@ async function channelSendTool(input: unknown, context?: ToolContextLike): Promi
108
200
  }
109
201
 
110
202
  const channelName = asNonEmptyString(parsed.channel) ?? DEFAULT_CHANNEL_NAME;
203
+ const provider = asNonEmptyString(parsed.provider);
204
+
205
+ if (provider) {
206
+ return channelSendViaTransport(parsed, context, provider, channelName, content);
207
+ }
208
+
111
209
  const sender = asNonEmptyString(parsed.sender) ?? 'assistant';
112
210
  const now = nowIso();
113
211
 
@@ -175,10 +273,86 @@ async function channelSendTool(input: unknown, context?: ToolContextLike): Promi
175
273
  // channel:receive
176
274
  // ---------------------------------------------------------------------------
177
275
 
276
+ async function channelReceiveViaTransport(
277
+ input: Record<string, unknown>,
278
+ context: ToolContextLike | undefined,
279
+ provider: string,
280
+ channel: string,
281
+ limit: number | null,
282
+ ): Promise<ToolOutput> {
283
+ const workspaceId = asNonEmptyString(context?.workspace_id);
284
+ if (!workspaceId) {
285
+ return failure(
286
+ 'WORKSPACE_CONTEXT_REQUIRED',
287
+ 'workspace_id is required when provider is specified.',
288
+ );
289
+ }
290
+
291
+ const transport = getChannelTransport(provider);
292
+ if (!transport) {
293
+ return failure(
294
+ 'INTEGRATION_PROVIDER_NOT_REGISTERED',
295
+ `No channel transport registered for provider: ${provider}`,
296
+ );
297
+ }
298
+
299
+ const cursor = asNonEmptyString(input.cursor) ?? undefined;
300
+
301
+ const transportResult = await transport.receive({
302
+ workspaceId,
303
+ provider,
304
+ channel,
305
+ cursor,
306
+ limit: limit && limit > 0 ? limit : undefined,
307
+ metadata: asOptionalRecord(input.metadata),
308
+ });
309
+
310
+ const outputData = withTransportMetadata(
311
+ {
312
+ provider,
313
+ capability: 'read',
314
+ channel,
315
+ ...(transportResult.records !== undefined ? { records: transportResult.records } : {}),
316
+ ...(transportResult.nextCursor !== undefined
317
+ ? { nextCursor: transportResult.nextCursor }
318
+ : {}),
319
+ ...(transportResult.failureClass ? { failureClass: transportResult.failureClass } : {}),
320
+ ...(transportResult.retryAfterSeconds !== undefined
321
+ ? { retryAfterSeconds: transportResult.retryAfterSeconds }
322
+ : {}),
323
+ },
324
+ transportResult.metadata,
325
+ );
326
+
327
+ if (!transportResult.success) {
328
+ return {
329
+ success: false,
330
+ error: {
331
+ code: 'INTEGRATION_PROVIDER_RECEIVE_FAILED',
332
+ message: transportResult.error ?? `Provider receive failed for provider: ${provider}`,
333
+ },
334
+ data: outputData,
335
+ };
336
+ }
337
+
338
+ return success(outputData);
339
+ }
340
+
178
341
  async function channelReceiveTool(input: unknown, _context?: ToolContextLike): Promise<ToolOutput> {
179
342
  const parsed = toRecord(input);
180
343
  const channelName = asNonEmptyString(parsed.channel);
181
344
  const limit = asInteger(parsed.limit);
345
+ const provider = asNonEmptyString(parsed.provider);
346
+
347
+ if (provider) {
348
+ return channelReceiveViaTransport(
349
+ parsed,
350
+ _context,
351
+ provider,
352
+ channelName ?? DEFAULT_CHANNEL_NAME,
353
+ limit,
354
+ );
355
+ }
182
356
 
183
357
  const storage = getStoragePort();
184
358
  const messages = await storage.readStore('messages');
@@ -0,0 +1,75 @@
1
+ // Copyright (c) 2026 Hellmai Ltd
2
+ // SPDX-License-Identifier: AGPL-3.0-only
3
+
4
+ import { getSidekickRuntimeContext } from './runtime-context.js';
5
+
6
+ export interface ChannelTransport {
7
+ provider: string;
8
+ send(req: {
9
+ workspaceId: string;
10
+ provider: string;
11
+ channel: string;
12
+ content: string;
13
+ metadata?: Record<string, unknown>;
14
+ }): Promise<{
15
+ success: boolean;
16
+ error?: string;
17
+ externalMessageId?: string;
18
+ failureClass?: 'retryable' | 'terminal';
19
+ retryAfterSeconds?: number;
20
+ metadata?: Record<string, unknown>;
21
+ }>;
22
+ receive(req: {
23
+ workspaceId: string;
24
+ provider: string;
25
+ channel: string;
26
+ cursor?: string;
27
+ limit?: number;
28
+ metadata?: Record<string, unknown>;
29
+ }): Promise<{
30
+ success: boolean;
31
+ error?: string;
32
+ records?: unknown[];
33
+ nextCursor?: string;
34
+ failureClass?: 'retryable' | 'terminal';
35
+ retryAfterSeconds?: number;
36
+ metadata?: Record<string, unknown>;
37
+ }>;
38
+ }
39
+
40
+ function normalizeProvider(provider: string): string {
41
+ return provider.trim().toLowerCase();
42
+ }
43
+
44
+ function getRegistry(): Map<string, ChannelTransport> | undefined {
45
+ return getSidekickRuntimeContext()?.channelTransports;
46
+ }
47
+
48
+ export function registerChannelTransport(transport: ChannelTransport): void {
49
+ const provider = normalizeProvider(transport.provider);
50
+ if (provider.length === 0) {
51
+ throw new Error('channel transport provider must be a non-empty string.');
52
+ }
53
+ const registry = getRegistry();
54
+ if (!registry) {
55
+ throw new Error('channel transport registry is unavailable outside sidekick runtime context.');
56
+ }
57
+ registry.set(provider, transport);
58
+ }
59
+
60
+ export function getChannelTransport(provider: string): ChannelTransport | undefined {
61
+ const normalized = normalizeProvider(provider);
62
+ if (normalized.length === 0) {
63
+ return undefined;
64
+ }
65
+ const registry = getRegistry();
66
+ return registry?.get(normalized);
67
+ }
68
+
69
+ export function clearChannelTransports(): void {
70
+ const registry = getRegistry();
71
+ if (!registry) {
72
+ return;
73
+ }
74
+ registry.clear();
75
+ }
@@ -20,3 +20,10 @@ export {
20
20
  runWithStoragePort,
21
21
  setDefaultStoragePort,
22
22
  } from './storage.js';
23
+
24
+ export {
25
+ type ChannelTransport,
26
+ clearChannelTransports,
27
+ getChannelTransport,
28
+ registerChannelTransport,
29
+ } from './channel-transports.js';
@@ -30,21 +30,45 @@ const TOOL_NAMES = {
30
30
  // Helpers
31
31
  // ---------------------------------------------------------------------------
32
32
 
33
- function normalizeSteps(value: unknown): RoutineStepRecord[] {
33
+ interface NormalizeStepsResult {
34
+ steps: RoutineStepRecord[];
35
+ warnings: string[];
36
+ }
37
+
38
+ function normalizeSteps(value: unknown): NormalizeStepsResult {
34
39
  if (!Array.isArray(value)) {
35
- return [];
40
+ return { steps: [], warnings: [] };
36
41
  }
37
42
 
38
43
  const steps: RoutineStepRecord[] = [];
39
- for (const candidate of value) {
44
+ const warnings: string[] = [];
45
+
46
+ for (let i = 0; i < value.length; i++) {
47
+ const candidate = value[i];
48
+
49
+ // String shorthand: coerce "tool:name" → { tool: "tool:name", input: {} }
50
+ if (typeof candidate === 'string') {
51
+ const tool = asNonEmptyString(candidate);
52
+ if (tool) {
53
+ steps.push({ tool, input: {} });
54
+ } else {
55
+ warnings.push(`steps[${i}] invalid: expected non-empty string or object with "tool".`);
56
+ }
57
+ continue;
58
+ }
59
+
40
60
  if (!candidate || typeof candidate !== 'object' || Array.isArray(candidate)) {
61
+ warnings.push(`steps[${i}] invalid: expected object with "tool" or a tool name string.`);
41
62
  continue;
42
63
  }
64
+
43
65
  const record = candidate as Record<string, unknown>;
44
66
  const tool = asNonEmptyString(record.tool);
45
67
  if (!tool) {
68
+ warnings.push(`steps[${i}] invalid: missing or empty "tool" property.`);
46
69
  continue;
47
70
  }
71
+
48
72
  const input =
49
73
  record.input && typeof record.input === 'object' && !Array.isArray(record.input)
50
74
  ? (record.input as Record<string, unknown>)
@@ -53,7 +77,7 @@ function normalizeSteps(value: unknown): RoutineStepRecord[] {
53
77
  steps.push({ tool, input });
54
78
  }
55
79
 
56
- return steps;
80
+ return { steps, warnings };
57
81
  }
58
82
 
59
83
  // ---------------------------------------------------------------------------
@@ -63,13 +87,17 @@ function normalizeSteps(value: unknown): RoutineStepRecord[] {
63
87
  async function routineCreateTool(input: unknown, context?: ToolContextLike): Promise<ToolOutput> {
64
88
  const parsed = toRecord(input);
65
89
  const name = asNonEmptyString(parsed.name);
66
- const steps = normalizeSteps(parsed.steps);
90
+ const { steps, warnings } = normalizeSteps(parsed.steps);
67
91
 
68
92
  if (!name) {
69
93
  return failure('INVALID_INPUT', 'name is required.');
70
94
  }
71
95
  if (steps.length === 0) {
72
- return failure('INVALID_INPUT', 'steps must include at least one tool step.');
96
+ const detail =
97
+ warnings.length > 0
98
+ ? `steps must include at least one tool step. Issues: ${warnings.join('; ')}`
99
+ : 'steps must include at least one tool step.';
100
+ return failure('INVALID_INPUT', detail);
73
101
  }
74
102
 
75
103
  const now = nowIso();
@@ -85,6 +113,7 @@ async function routineCreateTool(input: unknown, context?: ToolContextLike): Pro
85
113
  return success({
86
114
  dry_run: true,
87
115
  routine: routine as unknown as Record<string, unknown>,
116
+ ...(warnings.length > 0 ? { warnings } : {}),
88
117
  });
89
118
  }
90
119
 
@@ -103,7 +132,10 @@ async function routineCreateTool(input: unknown, context?: ToolContextLike): Pro
103
132
  );
104
133
  });
105
134
 
106
- return success({ routine: routine as unknown as Record<string, unknown> });
135
+ return success({
136
+ routine: routine as unknown as Record<string, unknown>,
137
+ ...(warnings.length > 0 ? { warnings } : {}),
138
+ });
107
139
  }
108
140
 
109
141
  // ---------------------------------------------------------------------------
@@ -0,0 +1,24 @@
1
+ // Copyright (c) 2026 Hellmai Ltd
2
+ // SPDX-License-Identifier: AGPL-3.0-only
3
+
4
+ import { AsyncLocalStorage } from 'node:async_hooks';
5
+ import type { ChannelTransport } from './channel-transports.js';
6
+ import type { StoragePort } from './storage.js';
7
+
8
+ export interface SidekickRuntimeContext {
9
+ storagePort: StoragePort;
10
+ channelTransports: Map<string, ChannelTransport>;
11
+ }
12
+
13
+ const runtimeContext = new AsyncLocalStorage<SidekickRuntimeContext>();
14
+
15
+ export function getSidekickRuntimeContext(): SidekickRuntimeContext | undefined {
16
+ return runtimeContext.getStore();
17
+ }
18
+
19
+ export async function runWithSidekickRuntimeContext<T>(
20
+ context: SidekickRuntimeContext,
21
+ fn: () => Promise<T>,
22
+ ): Promise<T> {
23
+ return runtimeContext.run(context, fn);
24
+ }
@@ -7,6 +7,7 @@ import type { AuditEvent } from './storage.js';
7
7
  export interface ToolContextLike {
8
8
  tool_name?: string;
9
9
  receipt_id?: string;
10
+ workspace_id?: string;
10
11
  }
11
12
 
12
13
  export interface ToolOutput {
@@ -1,10 +1,10 @@
1
1
  // Copyright (c) 2026 Hellmai Ltd
2
2
  // SPDX-License-Identifier: AGPL-3.0-only
3
3
 
4
- import { AsyncLocalStorage } from 'node:async_hooks';
5
4
  import { randomBytes } from 'node:crypto';
6
5
  import { appendFile, mkdir, open, readFile, rename, rm, stat, writeFile } from 'node:fs/promises';
7
6
  import path from 'node:path';
7
+ import { getSidekickRuntimeContext, runWithSidekickRuntimeContext } from './runtime-context.js';
8
8
 
9
9
  // ---------------------------------------------------------------------------
10
10
  // Constants
@@ -299,7 +299,6 @@ export class FsStoragePort implements StoragePort {
299
299
  // Injection helpers (AsyncLocalStorage-based)
300
300
  // ---------------------------------------------------------------------------
301
301
 
302
- const storageContext = new AsyncLocalStorage<StoragePort>();
303
302
  let defaultStoragePort: StoragePort = new FsStoragePort();
304
303
 
305
304
  export function setDefaultStoragePort(port: StoragePort): void {
@@ -307,9 +306,16 @@ export function setDefaultStoragePort(port: StoragePort): void {
307
306
  }
308
307
 
309
308
  export function getStoragePort(): StoragePort {
310
- return storageContext.getStore() ?? defaultStoragePort;
309
+ return getSidekickRuntimeContext()?.storagePort ?? defaultStoragePort;
311
310
  }
312
311
 
313
312
  export async function runWithStoragePort<T>(port: StoragePort, fn: () => Promise<T>): Promise<T> {
314
- return storageContext.run(port, fn);
313
+ const existingContext = getSidekickRuntimeContext();
314
+ return runWithSidekickRuntimeContext(
315
+ {
316
+ storagePort: port,
317
+ channelTransports: existingContext?.channelTransports ?? new Map(),
318
+ },
319
+ fn,
320
+ );
315
321
  }
@@ -1,4 +1,4 @@
1
1
 
2
- > @lumenflow/packs-software-delivery@3.9.4 build /home/tom/source/hellmai/lumenflow-dev/packages/@lumenflow/packs/software-delivery
2
+ > @lumenflow/packs-software-delivery@3.9.6 build /home/tom/source/hellmai/lumenflow-dev/packages/@lumenflow/packs/software-delivery
3
3
  > tsc
4
4
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lumenflow/packs-software-delivery",
3
- "version": "3.9.5",
3
+ "version": "3.9.7",
4
4
  "description": "Software delivery pack for LumenFlow — work units, gates, lanes, initiatives, and agent coordination",
5
5
  "keywords": [
6
6
  "lumenflow",