@haoyiyin/workflow 0.2.9 → 0.2.10

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.
@@ -1 +1 @@
1
- {"version":3,"file":"pi-extension.d.ts","sourceRoot":"","sources":["../../src/pi-extension.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,CAAC,OAAO,WAAW,EAAE,EAAE,GAAG,QAwF/B"}
1
+ {"version":3,"file":"pi-extension.d.ts","sourceRoot":"","sources":["../../src/pi-extension.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,CAAC,OAAO,WAAW,EAAE,EAAE,GAAG,QAqG/B"}
@@ -8,6 +8,8 @@ import { classifyIntent } from "./extension/classifier.js";
8
8
  // Extension API is provided by PI at runtime
9
9
  // We use 'any' to avoid compile-time dependency
10
10
  export default function (pi) {
11
+ // Store transformed input for before_agent_start to detect
12
+ let transformedInput = null;
11
13
  // Intercept user input before processing
12
14
  pi.on("input", async (event, ctx) => {
13
15
  // Skip if user already used a slash command
@@ -29,11 +31,14 @@ export default function (pi) {
29
31
  }
30
32
  }
31
33
  ctx.ui.notify(`[yi-workflow] Dispatching to /skill:${targetSkill} (${reason})`, "info");
32
- // Transform to skill command - main agent will receive "/skill:X ..."
33
- // The before_agent_start hook injects constraints forcing main agent to call skill
34
+ // Transform to explicit skill command with instruction not to analyze
35
+ const transformedText = `=== SKILL COMMAND ===\n/skill:${targetSkill}\n\nINPUT:\n${event.text}\n\n=== DO NOT ANALYZE ===\nYou MUST call the skill above immediately. NO thinking. NO planning. NO analysis. Just call the skill.`;
36
+ // Store for before_agent_start hook
37
+ transformedInput = transformedText;
38
+ // Transform input - this will be passed to main agent
34
39
  return {
35
40
  action: "transform",
36
- text: `/skill:${targetSkill} ${event.text}`,
41
+ text: transformedText,
37
42
  };
38
43
  });
39
44
  // Log when session starts
@@ -44,7 +49,8 @@ export default function (pi) {
44
49
  // This ensures main agent NEVER executes work directly
45
50
  pi.on("before_agent_start", async (event, ctx) => {
46
51
  const systemPrompt = event.systemPrompt || "";
47
- const userInput = event.userInput || "";
52
+ // Get the user input (either from event or from transformed global)
53
+ const userInput = transformedInput || event.userInput || "";
48
54
  // Detect if this input was transformed to a skill command
49
55
  const isSkillCommand = userInput.startsWith("/skill:");
50
56
  // Prepend THIN DISPATCHER constraints
@@ -81,6 +87,8 @@ CALL THE SKILL: "${userInput.split(" ")[0]}"
81
87
  `;
82
88
  // Prepend to system prompt
83
89
  event.systemPrompt = thinDispatcherRules + "\n\n" + systemPrompt;
90
+ // Reset transformed input for next turn
91
+ transformedInput = null;
84
92
  return { action: "continue" };
85
93
  });
86
94
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pi-extension.js","sourceRoot":"","sources":["../../src/pi-extension.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,6CAA6C;AAC7C,gDAAgD;AAChD,MAAM,CAAC,OAAO,WAAW,EAAO;IAC9B,yCAAyC;IACzC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,KAAU,EAAE,GAAQ,EAAE,EAAE;QAC5C,4CAA4C;QAC5C,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;QAChC,CAAC;QAED,kBAAkB;QAClB,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,IAAI,YAAY,CAAC;QAEjD,gCAAgC;QAChC,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,aAAa,GAAG,qFAAqF,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7H,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,GAAG,iCAAiC,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,gDAAgD,CAAC;YAC5D,CAAC;QACH,CAAC;QAED,GAAG,CAAC,EAAE,CAAC,MAAM,CACX,uCAAuC,WAAW,KAAK,MAAM,GAAG,EAChE,MAAM,CACP,CAAC;QAEF,sEAAsE;QACtE,mFAAmF;QACnF,OAAO;YACL,MAAM,EAAE,WAAW;YACnB,IAAI,EAAE,UAAU,WAAW,IAAI,KAAK,CAAC,IAAI,EAAE;SAC5C,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,0BAA0B;IAC1B,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE,KAAU,EAAE,GAAQ,EAAE,EAAE;QACpD,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,8BAA8B,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,4DAA4D;IAC5D,uDAAuD;IACvD,EAAE,CAAC,EAAE,CAAC,oBAAoB,EAAE,KAAK,EAAE,KAAU,EAAE,GAAQ,EAAE,EAAE;QACzD,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC;QAC9C,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC;QAExC,0DAA0D;QAC1D,MAAM,cAAc,GAAG,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAEvD,sCAAsC;QACtC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;kBAkBd,SAAS;oBACP,cAAc,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI;;EAEjE,cAAc,CAAC,CAAC,CAAC;;;;;;;mBAOA,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACzC,CAAC,CAAC,CAAC,EAAE;CACL,CAAC;QAEE,2BAA2B;QAC3B,KAAK,CAAC,YAAY,GAAG,mBAAmB,GAAG,MAAM,GAAG,YAAY,CAAC;QAEjE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"pi-extension.js","sourceRoot":"","sources":["../../src/pi-extension.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,6CAA6C;AAC7C,gDAAgD;AAChD,MAAM,CAAC,OAAO,WAAW,EAAO;IAC9B,2DAA2D;IAC3D,IAAI,gBAAgB,GAAkB,IAAI,CAAC;IAE3C,yCAAyC;IACzC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,KAAU,EAAE,GAAQ,EAAE,EAAE;QAC5C,4CAA4C;QAC5C,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;QAChC,CAAC;QAED,kBAAkB;QAClB,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,IAAI,YAAY,CAAC;QAEjD,gCAAgC;QAChC,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,aAAa,GAAG,qFAAqF,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7H,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,GAAG,iCAAiC,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,gDAAgD,CAAC;YAC5D,CAAC;QACH,CAAC;QAED,GAAG,CAAC,EAAE,CAAC,MAAM,CACX,uCAAuC,WAAW,KAAK,MAAM,GAAG,EAChE,MAAM,CACP,CAAC;QAEF,sEAAsE;QACtE,MAAM,eAAe,GAAG,iCAAiC,WAAW,eAAe,KAAK,CAAC,IAAI,oIAAoI,CAAC;QAElO,oCAAoC;QACpC,gBAAgB,GAAG,eAAe,CAAC;QAEnC,sDAAsD;QACtD,OAAO;YACL,MAAM,EAAE,WAAW;YACnB,IAAI,EAAE,eAAe;SACtB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,0BAA0B;IAC1B,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE,KAAU,EAAE,GAAQ,EAAE,EAAE;QACpD,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,8BAA8B,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,4DAA4D;IAC5D,uDAAuD;IACvD,EAAE,CAAC,EAAE,CAAC,oBAAoB,EAAE,KAAK,EAAE,KAAU,EAAE,GAAQ,EAAE,EAAE;QACzD,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC;QAE9C,oEAAoE;QACpE,MAAM,SAAS,GAAG,gBAAgB,IAAI,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC;QAE5D,0DAA0D;QAC1D,MAAM,cAAc,GAAG,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAEvD,sCAAsC;QACtC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;kBAkBd,SAAS;oBACP,cAAc,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI;;EAEjE,cAAc,CAAC,CAAC,CAAC;;;;;;;mBAOA,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACzC,CAAC,CAAC,CAAC,EAAE;CACL,CAAC;QAEE,2BAA2B;QAC3B,KAAK,CAAC,YAAY,GAAG,mBAAmB,GAAG,MAAM,GAAG,YAAY,CAAC;QAEjE,wCAAwC;QACxC,gBAAgB,GAAG,IAAI,CAAC;QAExB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haoyiyin/workflow",
3
- "version": "0.2.9",
3
+ "version": "0.2.10",
4
4
  "type": "module",
5
5
  "description": "Production workflow skills for planning, executing, reviewing, and finishing coding-agent work",
6
6
  "main": "./dist/index.js",
@@ -10,6 +10,9 @@ import { classifyIntent } from "./extension/classifier.js";
10
10
  // Extension API is provided by PI at runtime
11
11
  // We use 'any' to avoid compile-time dependency
12
12
  export default function (pi: any) {
13
+ // Store transformed input for before_agent_start to detect
14
+ let transformedInput: string | null = null;
15
+
13
16
  // Intercept user input before processing
14
17
  pi.on("input", async (event: any, ctx: any) => {
15
18
  // Skip if user already used a slash command
@@ -37,11 +40,16 @@ export default function (pi: any) {
37
40
  "info"
38
41
  );
39
42
 
40
- // Transform to skill command - main agent will receive "/skill:X ..."
41
- // The before_agent_start hook injects constraints forcing main agent to call skill
43
+ // Transform to explicit skill command with instruction not to analyze
44
+ const transformedText = `=== SKILL COMMAND ===\n/skill:${targetSkill}\n\nINPUT:\n${event.text}\n\n=== DO NOT ANALYZE ===\nYou MUST call the skill above immediately. NO thinking. NO planning. NO analysis. Just call the skill.`;
45
+
46
+ // Store for before_agent_start hook
47
+ transformedInput = transformedText;
48
+
49
+ // Transform input - this will be passed to main agent
42
50
  return {
43
51
  action: "transform",
44
- text: `/skill:${targetSkill} ${event.text}`,
52
+ text: transformedText,
45
53
  };
46
54
  });
47
55
 
@@ -54,7 +62,9 @@ export default function (pi: any) {
54
62
  // This ensures main agent NEVER executes work directly
55
63
  pi.on("before_agent_start", async (event: any, ctx: any) => {
56
64
  const systemPrompt = event.systemPrompt || "";
57
- const userInput = event.userInput || "";
65
+
66
+ // Get the user input (either from event or from transformed global)
67
+ const userInput = transformedInput || event.userInput || "";
58
68
 
59
69
  // Detect if this input was transformed to a skill command
60
70
  const isSkillCommand = userInput.startsWith("/skill:");
@@ -95,6 +105,9 @@ CALL THE SKILL: "${userInput.split(" ")[0]}"
95
105
  // Prepend to system prompt
96
106
  event.systemPrompt = thinDispatcherRules + "\n\n" + systemPrompt;
97
107
 
108
+ // Reset transformed input for next turn
109
+ transformedInput = null;
110
+
98
111
  return { action: "continue" };
99
112
  });
100
113
  }