@lovelybunch/core 1.0.76-alpha.0 → 1.0.76-alpha.2
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/change-proposal.d.ts +0 -3
- package/dist/change-proposal.d.ts.map +1 -1
- package/dist/change-proposal.js +3 -5
- package/dist/change-proposal.js.map +1 -1
- package/dist/context.d.ts +8 -8
- package/dist/events.d.ts +4 -4
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/knowledge.d.ts +116 -116
- package/dist/mail.d.ts +22 -22
- package/dist/pipeline-builders.d.ts +35 -0
- package/dist/pipeline-builders.d.ts.map +1 -0
- package/dist/pipeline-builders.js +85 -0
- package/dist/pipeline-builders.js.map +1 -0
- package/dist/pipelines.d.ts +4 -0
- package/dist/pipelines.d.ts.map +1 -0
- package/dist/pipelines.js +3 -0
- package/dist/pipelines.js.map +1 -0
- package/dist/skill-instructions.d.ts +3 -3
- package/dist/skill-instructions.d.ts.map +1 -1
- package/dist/skill-instructions.js +81 -49
- package/dist/skill-instructions.js.map +1 -1
- package/package.json +6 -2
- package/dist/agent-instructions.d.ts +0 -17
- package/dist/agent-instructions.d.ts.map +0 -1
- package/dist/agent-instructions.js +0 -160
- package/dist/agent-instructions.js.map +0 -1
- package/dist/proposals.d.ts +0 -765
- package/dist/proposals.d.ts.map +0 -1
- package/dist/proposals.js +0 -483
- package/dist/proposals.js.map +0 -1
package/dist/mail.d.ts
CHANGED
|
@@ -8,14 +8,14 @@ export declare const MailAttachmentSchema: z.ZodObject<{
|
|
|
8
8
|
contentDisposition: z.ZodOptional<z.ZodString>;
|
|
9
9
|
contentId: z.ZodOptional<z.ZodString>;
|
|
10
10
|
}, "strip", z.ZodTypeAny, {
|
|
11
|
-
id: string;
|
|
12
11
|
filename: string;
|
|
12
|
+
id: string;
|
|
13
13
|
contentType: string;
|
|
14
14
|
contentDisposition?: string | undefined;
|
|
15
15
|
contentId?: string | undefined;
|
|
16
16
|
}, {
|
|
17
|
-
id: string;
|
|
18
17
|
filename: string;
|
|
18
|
+
id: string;
|
|
19
19
|
contentType: string;
|
|
20
20
|
contentDisposition?: string | undefined;
|
|
21
21
|
contentId?: string | undefined;
|
|
@@ -36,14 +36,14 @@ export declare const MailMessageSchema: z.ZodObject<{
|
|
|
36
36
|
contentDisposition: z.ZodOptional<z.ZodString>;
|
|
37
37
|
contentId: z.ZodOptional<z.ZodString>;
|
|
38
38
|
}, "strip", z.ZodTypeAny, {
|
|
39
|
-
id: string;
|
|
40
39
|
filename: string;
|
|
40
|
+
id: string;
|
|
41
41
|
contentType: string;
|
|
42
42
|
contentDisposition?: string | undefined;
|
|
43
43
|
contentId?: string | undefined;
|
|
44
44
|
}, {
|
|
45
|
-
id: string;
|
|
46
45
|
filename: string;
|
|
46
|
+
id: string;
|
|
47
47
|
contentType: string;
|
|
48
48
|
contentDisposition?: string | undefined;
|
|
49
49
|
contentId?: string | undefined;
|
|
@@ -55,8 +55,8 @@ export declare const MailMessageSchema: z.ZodObject<{
|
|
|
55
55
|
processing: z.ZodOptional<z.ZodBoolean>;
|
|
56
56
|
processingStartedAt: z.ZodOptional<z.ZodString>;
|
|
57
57
|
}, "strip", z.ZodTypeAny, {
|
|
58
|
-
id: string;
|
|
59
58
|
content: string;
|
|
59
|
+
id: string;
|
|
60
60
|
emailId: string;
|
|
61
61
|
from: string;
|
|
62
62
|
to: string[];
|
|
@@ -65,8 +65,8 @@ export declare const MailMessageSchema: z.ZodObject<{
|
|
|
65
65
|
subject: string;
|
|
66
66
|
messageId: string;
|
|
67
67
|
attachments: {
|
|
68
|
-
id: string;
|
|
69
68
|
filename: string;
|
|
69
|
+
id: string;
|
|
70
70
|
contentType: string;
|
|
71
71
|
contentDisposition?: string | undefined;
|
|
72
72
|
contentId?: string | undefined;
|
|
@@ -90,8 +90,8 @@ export declare const MailMessageSchema: z.ZodObject<{
|
|
|
90
90
|
cc?: string[] | undefined;
|
|
91
91
|
bcc?: string[] | undefined;
|
|
92
92
|
attachments?: {
|
|
93
|
-
id: string;
|
|
94
93
|
filename: string;
|
|
94
|
+
id: string;
|
|
95
95
|
contentType: string;
|
|
96
96
|
contentDisposition?: string | undefined;
|
|
97
97
|
contentId?: string | undefined;
|
|
@@ -114,14 +114,14 @@ export declare const SaveMailInputSchema: z.ZodObject<{
|
|
|
114
114
|
contentDisposition: z.ZodOptional<z.ZodString>;
|
|
115
115
|
contentId: z.ZodOptional<z.ZodString>;
|
|
116
116
|
}, "strip", z.ZodTypeAny, {
|
|
117
|
-
id: string;
|
|
118
117
|
filename: string;
|
|
118
|
+
id: string;
|
|
119
119
|
contentType: string;
|
|
120
120
|
contentDisposition?: string | undefined;
|
|
121
121
|
contentId?: string | undefined;
|
|
122
122
|
}, {
|
|
123
|
-
id: string;
|
|
124
123
|
filename: string;
|
|
124
|
+
id: string;
|
|
125
125
|
contentType: string;
|
|
126
126
|
contentDisposition?: string | undefined;
|
|
127
127
|
contentId?: string | undefined;
|
|
@@ -138,8 +138,8 @@ export declare const SaveMailInputSchema: z.ZodObject<{
|
|
|
138
138
|
subject: string;
|
|
139
139
|
messageId: string;
|
|
140
140
|
attachments: {
|
|
141
|
-
id: string;
|
|
142
141
|
filename: string;
|
|
142
|
+
id: string;
|
|
143
143
|
contentType: string;
|
|
144
144
|
contentDisposition?: string | undefined;
|
|
145
145
|
contentId?: string | undefined;
|
|
@@ -155,8 +155,8 @@ export declare const SaveMailInputSchema: z.ZodObject<{
|
|
|
155
155
|
subject?: string | undefined;
|
|
156
156
|
messageId?: string | undefined;
|
|
157
157
|
attachments?: {
|
|
158
|
-
id: string;
|
|
159
158
|
filename: string;
|
|
159
|
+
id: string;
|
|
160
160
|
contentType: string;
|
|
161
161
|
contentDisposition?: string | undefined;
|
|
162
162
|
contentId?: string | undefined;
|
|
@@ -238,14 +238,14 @@ export declare const mailSchemas: {
|
|
|
238
238
|
contentDisposition: z.ZodOptional<z.ZodString>;
|
|
239
239
|
contentId: z.ZodOptional<z.ZodString>;
|
|
240
240
|
}, "strip", z.ZodTypeAny, {
|
|
241
|
-
id: string;
|
|
242
241
|
filename: string;
|
|
242
|
+
id: string;
|
|
243
243
|
contentType: string;
|
|
244
244
|
contentDisposition?: string | undefined;
|
|
245
245
|
contentId?: string | undefined;
|
|
246
246
|
}, {
|
|
247
|
-
id: string;
|
|
248
247
|
filename: string;
|
|
248
|
+
id: string;
|
|
249
249
|
contentType: string;
|
|
250
250
|
contentDisposition?: string | undefined;
|
|
251
251
|
contentId?: string | undefined;
|
|
@@ -266,14 +266,14 @@ export declare const mailSchemas: {
|
|
|
266
266
|
contentDisposition: z.ZodOptional<z.ZodString>;
|
|
267
267
|
contentId: z.ZodOptional<z.ZodString>;
|
|
268
268
|
}, "strip", z.ZodTypeAny, {
|
|
269
|
-
id: string;
|
|
270
269
|
filename: string;
|
|
270
|
+
id: string;
|
|
271
271
|
contentType: string;
|
|
272
272
|
contentDisposition?: string | undefined;
|
|
273
273
|
contentId?: string | undefined;
|
|
274
274
|
}, {
|
|
275
|
-
id: string;
|
|
276
275
|
filename: string;
|
|
276
|
+
id: string;
|
|
277
277
|
contentType: string;
|
|
278
278
|
contentDisposition?: string | undefined;
|
|
279
279
|
contentId?: string | undefined;
|
|
@@ -285,8 +285,8 @@ export declare const mailSchemas: {
|
|
|
285
285
|
processing: z.ZodOptional<z.ZodBoolean>;
|
|
286
286
|
processingStartedAt: z.ZodOptional<z.ZodString>;
|
|
287
287
|
}, "strip", z.ZodTypeAny, {
|
|
288
|
-
id: string;
|
|
289
288
|
content: string;
|
|
289
|
+
id: string;
|
|
290
290
|
emailId: string;
|
|
291
291
|
from: string;
|
|
292
292
|
to: string[];
|
|
@@ -295,8 +295,8 @@ export declare const mailSchemas: {
|
|
|
295
295
|
subject: string;
|
|
296
296
|
messageId: string;
|
|
297
297
|
attachments: {
|
|
298
|
-
id: string;
|
|
299
298
|
filename: string;
|
|
299
|
+
id: string;
|
|
300
300
|
contentType: string;
|
|
301
301
|
contentDisposition?: string | undefined;
|
|
302
302
|
contentId?: string | undefined;
|
|
@@ -320,8 +320,8 @@ export declare const mailSchemas: {
|
|
|
320
320
|
cc?: string[] | undefined;
|
|
321
321
|
bcc?: string[] | undefined;
|
|
322
322
|
attachments?: {
|
|
323
|
-
id: string;
|
|
324
323
|
filename: string;
|
|
324
|
+
id: string;
|
|
325
325
|
contentType: string;
|
|
326
326
|
contentDisposition?: string | undefined;
|
|
327
327
|
contentId?: string | undefined;
|
|
@@ -344,14 +344,14 @@ export declare const mailSchemas: {
|
|
|
344
344
|
contentDisposition: z.ZodOptional<z.ZodString>;
|
|
345
345
|
contentId: z.ZodOptional<z.ZodString>;
|
|
346
346
|
}, "strip", z.ZodTypeAny, {
|
|
347
|
-
id: string;
|
|
348
347
|
filename: string;
|
|
348
|
+
id: string;
|
|
349
349
|
contentType: string;
|
|
350
350
|
contentDisposition?: string | undefined;
|
|
351
351
|
contentId?: string | undefined;
|
|
352
352
|
}, {
|
|
353
|
-
id: string;
|
|
354
353
|
filename: string;
|
|
354
|
+
id: string;
|
|
355
355
|
contentType: string;
|
|
356
356
|
contentDisposition?: string | undefined;
|
|
357
357
|
contentId?: string | undefined;
|
|
@@ -368,8 +368,8 @@ export declare const mailSchemas: {
|
|
|
368
368
|
subject: string;
|
|
369
369
|
messageId: string;
|
|
370
370
|
attachments: {
|
|
371
|
-
id: string;
|
|
372
371
|
filename: string;
|
|
372
|
+
id: string;
|
|
373
373
|
contentType: string;
|
|
374
374
|
contentDisposition?: string | undefined;
|
|
375
375
|
contentId?: string | undefined;
|
|
@@ -385,8 +385,8 @@ export declare const mailSchemas: {
|
|
|
385
385
|
subject?: string | undefined;
|
|
386
386
|
messageId?: string | undefined;
|
|
387
387
|
attachments?: {
|
|
388
|
-
id: string;
|
|
389
388
|
filename: string;
|
|
389
|
+
id: string;
|
|
390
390
|
contentType: string;
|
|
391
391
|
contentDisposition?: string | undefined;
|
|
392
392
|
contentId?: string | undefined;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export type CliAgent = 'claude' | 'gemini' | 'codex' | 'droid' | 'kiro';
|
|
2
|
+
export type PipelineContextType = 'change-task' | 'prepare-task' | 'skill' | 'general';
|
|
3
|
+
export interface PipelineConfig {
|
|
4
|
+
taskId: string;
|
|
5
|
+
contextType: PipelineContextType;
|
|
6
|
+
cliAgent: CliAgent;
|
|
7
|
+
mcpServersMap: Record<string, any>;
|
|
8
|
+
selectedMcpServers: string[];
|
|
9
|
+
skills: {
|
|
10
|
+
id: string;
|
|
11
|
+
name: string;
|
|
12
|
+
}[];
|
|
13
|
+
selectedSkillIds: string[];
|
|
14
|
+
automationEnabled: boolean;
|
|
15
|
+
customInstruction?: string;
|
|
16
|
+
includeDefaultInstructions?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export type BuildCommand = (config: PipelineConfig) => string;
|
|
19
|
+
/**
|
|
20
|
+
* Sanitize instruction text for safe embedding in shell commands.
|
|
21
|
+
* - Backticks -> single quotes (prevents shell command substitution)
|
|
22
|
+
* - Curly/smart quotes -> straight equivalents
|
|
23
|
+
*/
|
|
24
|
+
export declare function sanitizeInstruction(text: string): string;
|
|
25
|
+
export declare const buildClaudeCommand: BuildCommand;
|
|
26
|
+
export declare const buildGeminiCommand: BuildCommand;
|
|
27
|
+
export declare const buildCodexCommand: BuildCommand;
|
|
28
|
+
export declare const buildDroidCommand: BuildCommand;
|
|
29
|
+
export declare const buildKiroCommand: BuildCommand;
|
|
30
|
+
/**
|
|
31
|
+
* Build the shell command for a given pipeline configuration.
|
|
32
|
+
* Dispatches to the appropriate per-agent builder.
|
|
33
|
+
*/
|
|
34
|
+
export declare function buildPipelineCommand(cfg: PipelineConfig): string;
|
|
35
|
+
//# sourceMappingURL=pipeline-builders.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline-builders.d.ts","sourceRoot":"","sources":["../src/pipeline-builders.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAA;AAEvE,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG,cAAc,GAAG,OAAO,GAAG,SAAS,CAAA;AAEtF,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,mBAAmB,CAAA;IAChC,QAAQ,EAAE,QAAQ,CAAA;IAClB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAClC,kBAAkB,EAAE,MAAM,EAAE,CAAA;IAC5B,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACtC,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,iBAAiB,EAAE,OAAO,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,0BAA0B,CAAC,EAAE,OAAO,CAAA;CACrC;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,cAAc,KAAK,MAAM,CAAA;AAE7D;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKxD;AAuBD,eAAO,MAAM,kBAAkB,EAAE,YAYhC,CAAA;AAED,eAAO,MAAM,kBAAkB,EAAE,YAOhC,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,YAQ/B,CAAA;AAED,eAAO,MAAM,iBAAiB,EAAE,YAQ/B,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,YAS9B,CAAA;AAUD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAMhE"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { getChangeTaskInstructions, getPrepareChangeTaskInstructions, getSkillInstructions, } from './skill-instructions.js';
|
|
2
|
+
/**
|
|
3
|
+
* Sanitize instruction text for safe embedding in shell commands.
|
|
4
|
+
* - Backticks -> single quotes (prevents shell command substitution)
|
|
5
|
+
* - Curly/smart quotes -> straight equivalents
|
|
6
|
+
*/
|
|
7
|
+
export function sanitizeInstruction(text) {
|
|
8
|
+
return text
|
|
9
|
+
.replace(/`/g, "'")
|
|
10
|
+
.replace(/[\u2018\u2019]/g, "'")
|
|
11
|
+
.replace(/[\u201C\u201D]/g, '"');
|
|
12
|
+
}
|
|
13
|
+
function getInstructionParts(cfg) {
|
|
14
|
+
const skillPaths = cfg.selectedSkillIds.map((id) => `.nut/skills/${id}/SKILL.md`);
|
|
15
|
+
const safeCustom = cfg.customInstruction ? sanitizeInstruction(cfg.customInstruction) : cfg.customInstruction;
|
|
16
|
+
const parts = cfg.contextType === 'change-task'
|
|
17
|
+
? getChangeTaskInstructions(cfg.taskId, skillPaths, safeCustom, cfg.includeDefaultInstructions ?? true)
|
|
18
|
+
: cfg.contextType === 'prepare-task'
|
|
19
|
+
? getPrepareChangeTaskInstructions(cfg.taskId, skillPaths, safeCustom)
|
|
20
|
+
: getSkillInstructions(skillPaths, safeCustom);
|
|
21
|
+
return parts.join(' ');
|
|
22
|
+
}
|
|
23
|
+
function escapeForNodeE(nodeJs) {
|
|
24
|
+
return `node -e "${nodeJs.replace(/\\/g, '\\\\').replace(/"/g, '\\"')}"`;
|
|
25
|
+
}
|
|
26
|
+
function buildMcpSelSet(selectedMcpServers) {
|
|
27
|
+
return selectedMcpServers.map((n) => `'${n.replace(/'/g, "'\\''")}'`).join(',');
|
|
28
|
+
}
|
|
29
|
+
export const buildClaudeCommand = (cfg) => {
|
|
30
|
+
const instruction = getInstructionParts(cfg);
|
|
31
|
+
const selList = buildMcpSelSet(cfg.selectedMcpServers);
|
|
32
|
+
const flags = [cfg.automationEnabled ? '--dangerously-skip-permissions' : '']
|
|
33
|
+
.filter(Boolean)
|
|
34
|
+
.join(' ');
|
|
35
|
+
const argsList = [JSON.stringify(instruction)].concat(flags ? [JSON.stringify('--dangerously-skip-permissions')] : []);
|
|
36
|
+
const nodeJs = `const fs=require('fs'),{spawn}=require('child_process');const s=new Set([${selList}]);const c=require('./.nut/mcp/config.json');const filtered=Object.entries(c.mcpServers||{}).filter(([k])=>s.has(k)).map(([k,v])=>[k,{...v,type:v.type||(v.url?'http':'stdio')}]);const o={mcpServers:Object.fromEntries(filtered)};fs.writeFileSync('.mcp.json',JSON.stringify(o,null,2));const p=spawn('claude',[${argsList.join(',')}],{stdio:'inherit'});p.on('exit',code=>process.exit(code));`;
|
|
37
|
+
return escapeForNodeE(nodeJs);
|
|
38
|
+
};
|
|
39
|
+
export const buildGeminiCommand = (cfg) => {
|
|
40
|
+
const instruction = getInstructionParts(cfg);
|
|
41
|
+
const selList = buildMcpSelSet(cfg.selectedMcpServers);
|
|
42
|
+
const nodeJs = `const fs=require('fs'),path=require('path'),{spawn}=require('child_process');const s=new Set([${selList}]);const c=require('./.nut/mcp/config.json');const geminiPath=path.join(require('os').homedir(),'.gemini','settings.json');let settings={};try{settings=JSON.parse(fs.readFileSync(geminiPath,'utf8'))}catch(e){}settings.mcpServers=Object.fromEntries(Object.entries(c.mcpServers||{}).filter(([k])=>s.has(k)));fs.writeFileSync(geminiPath,JSON.stringify(settings,null,2));const p=spawn('gemini',['-i',${JSON.stringify(instruction)}],{stdio:'inherit'});p.on('exit',code=>process.exit(code));`;
|
|
43
|
+
return escapeForNodeE(nodeJs);
|
|
44
|
+
};
|
|
45
|
+
export const buildCodexCommand = (cfg) => {
|
|
46
|
+
const instruction = getInstructionParts(cfg);
|
|
47
|
+
const selList = buildMcpSelSet(cfg.selectedMcpServers);
|
|
48
|
+
const argsList = [JSON.stringify(instruction)].concat(cfg.automationEnabled ? [JSON.stringify('--dangerously-bypass-approvals-and-sandbox')] : []);
|
|
49
|
+
const nodeJs = `const fs=require('fs'),{spawn}=require('child_process');const s=new Set([${selList}]);const c=require('./.nut/mcp/config.json');const filtered=Object.entries(c.mcpServers||{}).filter(([k])=>s.has(k)).map(([k,v])=>[k,{...v,type:v.type||(v.url?'http':'stdio')}]);const o={mcpServers:Object.fromEntries(filtered)};fs.writeFileSync('.mcp.json',JSON.stringify(o,null,2));const p=spawn('codex',[${argsList.join(',')}],{stdio:'inherit'});p.on('exit',code=>process.exit(code));`;
|
|
50
|
+
return escapeForNodeE(nodeJs);
|
|
51
|
+
};
|
|
52
|
+
export const buildDroidCommand = (cfg) => {
|
|
53
|
+
const instruction = getInstructionParts(cfg);
|
|
54
|
+
const selList = buildMcpSelSet(cfg.selectedMcpServers);
|
|
55
|
+
const argsList = [JSON.stringify(instruction)];
|
|
56
|
+
const nodeJs = `const fs=require('fs'),{spawn}=require('child_process');const s=new Set([${selList}]);const c=require('./.nut/mcp/config.json');const filtered=Object.entries(c.mcpServers||{}).filter(([k])=>s.has(k)).map(([k,v])=>[k,{...v,type:v.type||(v.url?'http':'stdio')}]);const o={mcpServers:Object.fromEntries(filtered)};fs.writeFileSync('.mcp.json',JSON.stringify(o,null,2));const p=spawn('droid',[${argsList.join(',')}],{stdio:'inherit'});p.on('exit',code=>process.exit(code));`;
|
|
57
|
+
return escapeForNodeE(nodeJs);
|
|
58
|
+
};
|
|
59
|
+
export const buildKiroCommand = (cfg) => {
|
|
60
|
+
const instruction = getInstructionParts(cfg);
|
|
61
|
+
const selList = buildMcpSelSet(cfg.selectedMcpServers);
|
|
62
|
+
const autoFlags = cfg.automationEnabled ? [`'--no-interactive'`, `'--trust-all-tools'`] : [];
|
|
63
|
+
const argsList = [`'chat'`, ...autoFlags, JSON.stringify(instruction)];
|
|
64
|
+
const nodeJs = `const fs=require('fs'),{spawn}=require('child_process');const s=new Set([${selList}]);const c=require('./.nut/mcp/config.json');const filtered=Object.entries(c.mcpServers||{}).filter(([k])=>s.has(k)).map(([k,v])=>[k,{...v,type:v.type||(v.url?'http':'stdio')}]);const o={mcpServers:Object.fromEntries(filtered)};fs.writeFileSync('.mcp.json',JSON.stringify(o,null,2));const p=spawn('kiro-cli',[${argsList.join(',')}],{stdio:'inherit'});p.on('exit',code=>process.exit(code));`;
|
|
65
|
+
return escapeForNodeE(nodeJs);
|
|
66
|
+
};
|
|
67
|
+
const BUILDERS = {
|
|
68
|
+
claude: buildClaudeCommand,
|
|
69
|
+
gemini: buildGeminiCommand,
|
|
70
|
+
codex: buildCodexCommand,
|
|
71
|
+
droid: buildDroidCommand,
|
|
72
|
+
kiro: buildKiroCommand,
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Build the shell command for a given pipeline configuration.
|
|
76
|
+
* Dispatches to the appropriate per-agent builder.
|
|
77
|
+
*/
|
|
78
|
+
export function buildPipelineCommand(cfg) {
|
|
79
|
+
const builder = BUILDERS[cfg.cliAgent];
|
|
80
|
+
if (!builder) {
|
|
81
|
+
throw new Error(`Unknown CLI agent: ${cfg.cliAgent}`);
|
|
82
|
+
}
|
|
83
|
+
return builder(cfg);
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=pipeline-builders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline-builders.js","sourceRoot":"","sources":["../src/pipeline-builders.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { SCHEMA_REFERENCE_INSTRUCTION, PROJECT_REFERENCE_INSTRUCTION, getChangeTaskInstructions, getPrepareChangeTaskInstructions, getSkillInstructions, getAgentInstructions, } from './skill-instructions.js';
|
|
2
|
+
export { sanitizeInstruction, buildClaudeCommand, buildGeminiCommand, buildCodexCommand, buildDroidCommand, buildKiroCommand, buildPipelineCommand, } from './pipeline-builders.js';
|
|
3
|
+
export type { CliAgent, PipelineContextType, PipelineConfig, BuildCommand, } from './pipeline-builders.js';
|
|
4
|
+
//# sourceMappingURL=pipelines.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipelines.d.ts","sourceRoot":"","sources":["../src/pipelines.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,6BAA6B,EAC7B,yBAAyB,EACzB,gCAAgC,EAChC,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,wBAAwB,CAAA;AAE/B,YAAY,EACV,QAAQ,EACR,mBAAmB,EACnB,cAAc,EACd,YAAY,GACb,MAAM,wBAAwB,CAAA"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { SCHEMA_REFERENCE_INSTRUCTION, PROJECT_REFERENCE_INSTRUCTION, getChangeTaskInstructions, getPrepareChangeTaskInstructions, getSkillInstructions, getAgentInstructions, } from './skill-instructions.js';
|
|
2
|
+
export { sanitizeInstruction, buildClaudeCommand, buildGeminiCommand, buildCodexCommand, buildDroidCommand, buildKiroCommand, buildPipelineCommand, } from './pipeline-builders.js';
|
|
3
|
+
//# sourceMappingURL=pipelines.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipelines.js","sourceRoot":"","sources":["../src/pipelines.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,6BAA6B,EAC7B,yBAAyB,EACzB,gCAAgC,EAChC,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,wBAAwB,CAAA"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
export declare const SCHEMA_REFERENCE_INSTRUCTION = "Consult the schema references in .nut/.schema (task.schema.md, project.schema.md, architecture.schema.md, skill.schema.md, knowledge.schema.md) so any updates you make follow the documented structure and include complete arrays for plan steps, dependencies, tags, labels, and comments.";
|
|
2
2
|
export declare const PROJECT_REFERENCE_INSTRUCTION = "Use .nut/context/project.md and .nut/context/architecture.md for reference.";
|
|
3
3
|
/**
|
|
4
|
-
* Get instructions for change task (
|
|
4
|
+
* Get instructions for change task (task-*) workflows
|
|
5
5
|
*/
|
|
6
|
-
export declare function getChangeTaskInstructions(
|
|
6
|
+
export declare function getChangeTaskInstructions(taskId: string, skillPaths: string[], customInstruction?: string, includeDefaultInstructions?: boolean): string[];
|
|
7
7
|
/**
|
|
8
|
-
* Get instructions for reviewing / preparing a change task (
|
|
8
|
+
* Get instructions for reviewing / preparing a change task (task-*) before implementation.
|
|
9
9
|
* Assesses readiness without starting any actual work.
|
|
10
10
|
*/
|
|
11
11
|
export declare function getPrepareChangeTaskInstructions(taskId: string, skillPaths: string[], customInstruction?: string): string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-instructions.d.ts","sourceRoot":"","sources":["../src/skill-instructions.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,4BAA4B,kSACwP,CAAC;AAClS,eAAO,MAAM,6BAA6B,gFACqC,CAAA;AAE/E;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,
|
|
1
|
+
{"version":3,"file":"skill-instructions.d.ts","sourceRoot":"","sources":["../src/skill-instructions.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,4BAA4B,kSACwP,CAAC;AAClS,eAAO,MAAM,6BAA6B,gFACqC,CAAA;AAE/E;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAAE,EACpB,iBAAiB,CAAC,EAAE,MAAM,EAC1B,0BAA0B,GAAE,OAAc,GACzC,MAAM,EAAE,CAyFV;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAAE,EACpB,iBAAiB,CAAC,EAAE,MAAM,GACzB,MAAM,EAAE,CAqFV;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAAE,EACpB,iBAAiB,CAAC,EAAE,MAAM,GACzB,MAAM,EAAE,CAgBV;AAGD,mDAAmD;AACnD,eAAO,MAAM,oBAAoB,6BAAuB,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export const SCHEMA_REFERENCE_INSTRUCTION = 'Consult the schema references in .nut/.schema (task.schema.md, project.schema.md, architecture.schema.md, skill.schema.md, knowledge.schema.md) so any updates you make follow the documented structure and include complete arrays for plan steps, dependencies, tags, labels, and comments.';
|
|
2
2
|
export const PROJECT_REFERENCE_INSTRUCTION = 'Use .nut/context/project.md and .nut/context/architecture.md for reference.';
|
|
3
3
|
/**
|
|
4
|
-
* Get instructions for change task (
|
|
4
|
+
* Get instructions for change task (task-*) workflows
|
|
5
5
|
*/
|
|
6
|
-
export function getChangeTaskInstructions(
|
|
6
|
+
export function getChangeTaskInstructions(taskId, skillPaths, customInstruction, includeDefaultInstructions = true) {
|
|
7
7
|
const sections = [];
|
|
8
8
|
// Add default instructions only if requested
|
|
9
9
|
if (includeDefaultInstructions) {
|
|
@@ -12,43 +12,58 @@ export function getChangeTaskInstructions(proposalId, skillPaths, customInstruct
|
|
|
12
12
|
`## Task`,
|
|
13
13
|
``,
|
|
14
14
|
`- Review and begin working on the following task:`,
|
|
15
|
-
` .nut/tasks/${
|
|
16
|
-
`- Retrieve your firstName, lastName, and email address from: .nut/config.json and use this identity
|
|
15
|
+
` .nut/tasks/${taskId}.md`,
|
|
16
|
+
`- Retrieve your firstName, lastName, and email address from: .nut/config.json and use this identity for task updates, comments, git commits, etc.`,
|
|
17
17
|
].join('\n'));
|
|
18
18
|
// Task Lifecycle section
|
|
19
19
|
sections.push([
|
|
20
20
|
`## Task Lifecycle`,
|
|
21
21
|
``,
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
`1. Before beginning any work, set the task to active:`,
|
|
23
|
+
` nut task update ${taskId} --status active`,
|
|
24
24
|
``,
|
|
25
|
-
|
|
25
|
+
`2. Work through the existing plan steps, updating each as you go:`,
|
|
26
|
+
` nut task step-update ${taskId} <stepId> --status active (when starting a step)`,
|
|
27
|
+
` nut task step-update ${taskId} <stepId> --status done (when complete)`,
|
|
28
|
+
` nut task step-update ${taskId} <stepId> --status failed --error "reason"`,
|
|
29
|
+
` nut task step-update ${taskId} <stepId> --status skipped (if not applicable)`,
|
|
30
|
+
` If no steps exist yet, add them: nut task step ${taskId} "Step description"`,
|
|
26
31
|
``,
|
|
27
|
-
|
|
28
|
-
|
|
32
|
+
`3. If you need human clarification or input, block the task and stop work:`,
|
|
33
|
+
` nut task update ${taskId} --status blocked`,
|
|
34
|
+
` nut task comment ${taskId} "Describe what you need" --author "firstName lastName"`,
|
|
35
|
+
``,
|
|
36
|
+
`4. When implementation is complete and ready for review:`,
|
|
37
|
+
` nut task update ${taskId} --status review`,
|
|
38
|
+
` nut task comment ${taskId} "Summary of what was done" --author "firstName lastName"`,
|
|
39
|
+
``,
|
|
40
|
+
`### Handling Revision Requests`,
|
|
41
|
+
``,
|
|
42
|
+
`If the task status is 'revision', the user has reviewed your work and left feedback.`,
|
|
43
|
+
`Read the most recent comment(s) carefully, address the feedback, then set back to review:`,
|
|
44
|
+
` nut task update ${taskId} --status review`,
|
|
29
45
|
].join('\n'));
|
|
30
46
|
// Abilities section
|
|
31
47
|
sections.push([
|
|
32
48
|
`## Abilities`,
|
|
33
49
|
``,
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
`
|
|
37
|
-
`
|
|
38
|
-
|
|
39
|
-
` -
|
|
40
|
-
`
|
|
41
|
-
` -
|
|
42
|
-
|
|
43
|
-
`
|
|
44
|
-
`-
|
|
50
|
+
`Beyond task management, the following are at your disposal and should be factored into the plan where appropriate (each command has its own --help):`,
|
|
51
|
+
`- Knowledge documents (for research outputs, notes, and reference material):`,
|
|
52
|
+
` - nut knowledge create "Title" --content "# Title\\n\\nContent here"`,
|
|
53
|
+
` - nut knowledge list / get / update`,
|
|
54
|
+
`- Resource library (images, audio, video, or existing files):`,
|
|
55
|
+
` - nut resource ls / add ./file.png`,
|
|
56
|
+
` - nut resource image "description" --save`,
|
|
57
|
+
` - nut resource audio "description" --save`,
|
|
58
|
+
`- Skills (specialized, reusable modules with an official registry):`,
|
|
59
|
+
` - nut skill list / nut skill registry list`,
|
|
60
|
+
`- Also available: git, gh, node, python`,
|
|
45
61
|
].join('\n'));
|
|
46
62
|
// Operational Rules section
|
|
47
63
|
sections.push([
|
|
48
64
|
`## Operational Rules`,
|
|
49
65
|
``,
|
|
50
|
-
`- DO use the nut CLI to update task status as progress changes`,
|
|
51
|
-
` (nut --help or nut task --help for details)`,
|
|
66
|
+
`- DO use the nut CLI to update task and step status as progress changes`,
|
|
52
67
|
`- DO NOT edit files outside the scope of the approved task (unless instructed by the Additional Instructions below)`,
|
|
53
68
|
].join('\n'));
|
|
54
69
|
}
|
|
@@ -72,7 +87,7 @@ export function getChangeTaskInstructions(proposalId, skillPaths, customInstruct
|
|
|
72
87
|
return [sections.join('\n\n')];
|
|
73
88
|
}
|
|
74
89
|
/**
|
|
75
|
-
* Get instructions for reviewing / preparing a change task (
|
|
90
|
+
* Get instructions for reviewing / preparing a change task (task-*) before implementation.
|
|
76
91
|
* Assesses readiness without starting any actual work.
|
|
77
92
|
*/
|
|
78
93
|
export function getPrepareChangeTaskInstructions(taskId, skillPaths, customInstruction) {
|
|
@@ -81,43 +96,60 @@ export function getPrepareChangeTaskInstructions(taskId, skillPaths, customInstr
|
|
|
81
96
|
sections.push([
|
|
82
97
|
`## Your Task`,
|
|
83
98
|
``,
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
`-
|
|
88
|
-
`-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
99
|
+
`Review the following task to assess whether it is ready for implementation.`,
|
|
100
|
+
`This is a preparatory assessment phase only -- DO NOT start any implementation work.`,
|
|
101
|
+
``,
|
|
102
|
+
`- Read the task (including all existing comments and plan steps): .nut/tasks/${taskId}.md`,
|
|
103
|
+
`- Retrieve your firstName, lastName, and email address from: .nut/config.json and use this identity for task updates, comments, etc.`,
|
|
104
|
+
``,
|
|
105
|
+
`### Assessment Steps`,
|
|
106
|
+
``,
|
|
107
|
+
`1. Set a readiness score (0-100, where 100 = total confidence you could complete the task without mistakes or further input):`,
|
|
108
|
+
` nut task update ${taskId} --readiness <score>`,
|
|
109
|
+
``,
|
|
110
|
+
`2. If readiness is high enough, add implementation plan steps:`,
|
|
111
|
+
` nut task step ${taskId} "Step description"`,
|
|
112
|
+
``,
|
|
113
|
+
`3. Evaluate whether the task should be decomposed into smaller tasks.`,
|
|
114
|
+
` If decomposition is recommended, note this in your comment but DO NOT decompose without user confirmation.`,
|
|
115
|
+
``,
|
|
116
|
+
`4. Add a comment summarizing your assessment (readiness rationale, risks, decomposition recommendation if any):`,
|
|
117
|
+
` nut task comment ${taskId} "Assessment summary" --author "firstName lastName"`,
|
|
118
|
+
``,
|
|
119
|
+
`5. Set the task status based on your assessment:`,
|
|
120
|
+
` nut task update ${taskId} --status ready (if ready for implementation)`,
|
|
121
|
+
` nut task update ${taskId} --status blocked (if missing information or resources)`,
|
|
122
|
+
``,
|
|
123
|
+
`### Handling Revision Requests`,
|
|
124
|
+
``,
|
|
125
|
+
`If the task status is 'revision', the user has reviewed your assessment and left feedback.`,
|
|
126
|
+
`Read the most recent comment(s) carefully, revise your plan steps and readiness accordingly,`,
|
|
127
|
+
`then set status back to 'ready' or 'blocked' as appropriate.`,
|
|
92
128
|
].join('\n'));
|
|
93
129
|
// Abilities section
|
|
94
130
|
sections.push([
|
|
95
131
|
`## Abilities`,
|
|
96
132
|
``,
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
`
|
|
100
|
-
`
|
|
101
|
-
|
|
102
|
-
`
|
|
103
|
-
` -
|
|
104
|
-
`
|
|
105
|
-
|
|
106
|
-
`
|
|
107
|
-
|
|
108
|
-
` - Using available skills (specialized, reusable, and portable modules). There is also an official registry you can pull from:`,
|
|
109
|
-
` - nut skill list`,
|
|
110
|
-
` - nut skill registry list`,
|
|
111
|
-
`- Similarly, the following are available: git, gh, node, python`,
|
|
133
|
+
`Beyond task management, the following are at your disposal and should be factored into the plan where appropriate (each command has its own --help):`,
|
|
134
|
+
`- Knowledge documents (for research outputs, notes, and reference material):`,
|
|
135
|
+
` - nut knowledge create "Title" --content "# Title\\n\\nContent here"`,
|
|
136
|
+
` - nut knowledge list / get / update`,
|
|
137
|
+
`- Resource library (images, audio, video, or existing files):`,
|
|
138
|
+
` - nut resource ls / add ./file.png`,
|
|
139
|
+
` - nut resource image "description" --save`,
|
|
140
|
+
` - nut resource audio "description" --save`,
|
|
141
|
+
`- Skills (specialized, reusable modules with an official registry):`,
|
|
142
|
+
` - nut skill list / nut skill registry list`,
|
|
143
|
+
`- Also available: git, gh, node, python`,
|
|
112
144
|
].join('\n'));
|
|
113
145
|
// Operational Rules section
|
|
114
146
|
sections.push([
|
|
115
147
|
`## Operational Rules`,
|
|
116
148
|
``,
|
|
149
|
+
`- DO NOT start any implementation work during this phase`,
|
|
117
150
|
`- DO NOT use 'npx' when running the nut CLI`,
|
|
118
|
-
`- DO use the nut CLI to update task status
|
|
119
|
-
|
|
120
|
-
`- DO NOT edit files outside the scope of the approved task (unless instructed by the Additional Instructions below)`,
|
|
151
|
+
`- DO use the nut CLI to update task status and readiness`,
|
|
152
|
+
`- DO NOT edit files outside the scope of the task (unless instructed by the Additional Instructions below)`,
|
|
121
153
|
].join('\n'));
|
|
122
154
|
// Skills section (conditional)
|
|
123
155
|
if (skillPaths.length > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-instructions.js","sourceRoot":"","sources":["../src/skill-instructions.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,4BAA4B,GACvC,+RAA+R,CAAC;AAClS,MAAM,CAAC,MAAM,6BAA6B,GACxC,6EAA6E,CAAA;AAE/E;;GAEG;AACH,MAAM,UAAU,yBAAyB,CACvC,
|
|
1
|
+
{"version":3,"file":"skill-instructions.js","sourceRoot":"","sources":["../src/skill-instructions.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lovelybunch/core",
|
|
3
|
-
"version": "1.0.76-alpha.
|
|
3
|
+
"version": "1.0.76-alpha.2",
|
|
4
4
|
"description": "Core Coconut functionality",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -13,6 +13,10 @@
|
|
|
13
13
|
"./logging": {
|
|
14
14
|
"types": "./dist/logging/index.d.ts",
|
|
15
15
|
"import": "./dist/logging/index.js"
|
|
16
|
+
},
|
|
17
|
+
"./pipelines": {
|
|
18
|
+
"types": "./dist/pipelines.d.ts",
|
|
19
|
+
"import": "./dist/pipelines.js"
|
|
16
20
|
}
|
|
17
21
|
},
|
|
18
22
|
"files": [
|
|
@@ -38,7 +42,7 @@
|
|
|
38
42
|
"test:ui": "vitest --ui"
|
|
39
43
|
},
|
|
40
44
|
"dependencies": {
|
|
41
|
-
"@lovelybunch/types": "^1.0.76-alpha.
|
|
45
|
+
"@lovelybunch/types": "^1.0.76-alpha.2",
|
|
42
46
|
"@slack/web-api": "^7.13.0",
|
|
43
47
|
"fuse.js": "^7.0.0",
|
|
44
48
|
"gray-matter": "^4.0.3",
|