@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.
- package/dist/wu-claim-branch.js +38 -7
- package/dist/wu-claim-branch.js.map +1 -1
- package/dist/wu-claim-worktree.js +18 -4
- package/dist/wu-claim-worktree.js.map +1 -1
- package/package.json +8 -8
- package/packs/sidekick/.turbo/turbo-build.log +1 -1
- package/packs/sidekick/manifest.ts +5 -0
- package/packs/sidekick/manifest.yaml +12 -0
- package/packs/sidekick/package.json +2 -1
- package/packs/sidekick/tool-impl/channel-tools.ts +174 -0
- package/packs/sidekick/tool-impl/channel-transports.ts +75 -0
- package/packs/sidekick/tool-impl/index.ts +7 -0
- package/packs/sidekick/tool-impl/routine-tools.ts +39 -7
- package/packs/sidekick/tool-impl/runtime-context.ts +24 -0
- package/packs/sidekick/tool-impl/shared.ts +1 -0
- package/packs/sidekick/tool-impl/storage.ts +10 -4
- package/packs/software-delivery/.turbo/turbo-build.log +1 -1
- package/packs/software-delivery/package.json +1 -1
package/dist/wu-claim-branch.js
CHANGED
|
@@ -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:
|
|
125
|
+
console.log(`- Mode: ${getBranchModeDisplayLabel(claimedMode)}`);
|
|
96
126
|
const refDisplay = args.noPush ? `- Commit: ${msg}` : `- Branch: ${branch}`;
|
|
97
127
|
console.log(refDisplay);
|
|
98
|
-
|
|
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
|
-
|
|
103
|
-
|
|
104
|
-
|
|
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
|
-
|
|
210
|
-
|
|
211
|
-
|
|
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.
|
|
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.
|
|
184
|
-
"@lumenflow/initiatives": "3.9.
|
|
185
|
-
"@lumenflow/
|
|
186
|
-
"@lumenflow/
|
|
187
|
-
"@lumenflow/
|
|
188
|
-
"@lumenflow/
|
|
189
|
-
"@lumenflow/
|
|
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",
|
|
@@ -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.
|
|
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
|
+
}
|
|
@@ -30,21 +30,45 @@ const TOOL_NAMES = {
|
|
|
30
30
|
// Helpers
|
|
31
31
|
// ---------------------------------------------------------------------------
|
|
32
32
|
|
|
33
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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({
|
|
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
|
+
}
|
|
@@ -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
|
|
309
|
+
return getSidekickRuntimeContext()?.storagePort ?? defaultStoragePort;
|
|
311
310
|
}
|
|
312
311
|
|
|
313
312
|
export async function runWithStoragePort<T>(port: StoragePort, fn: () => Promise<T>): Promise<T> {
|
|
314
|
-
|
|
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.
|
|
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
|
|