@intrect/openswarm 0.4.0 → 0.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/LICENSE +674 -21
  2. package/README.md +15 -1
  3. package/config.example.yaml +6 -1
  4. package/dist/adapters/agenticLoop.d.ts.map +1 -1
  5. package/dist/adapters/agenticLoop.js +78 -0
  6. package/dist/adapters/agenticLoop.js.map +1 -1
  7. package/dist/adapters/base.d.ts.map +1 -1
  8. package/dist/adapters/base.js +5 -1
  9. package/dist/adapters/base.js.map +1 -1
  10. package/dist/adapters/envPath.d.ts +20 -0
  11. package/dist/adapters/envPath.d.ts.map +1 -0
  12. package/dist/adapters/envPath.js +49 -0
  13. package/dist/adapters/envPath.js.map +1 -0
  14. package/dist/adapters/gpt.d.ts.map +1 -1
  15. package/dist/adapters/gpt.js +1 -0
  16. package/dist/adapters/gpt.js.map +1 -1
  17. package/dist/adapters/local.d.ts.map +1 -1
  18. package/dist/adapters/local.js +1 -0
  19. package/dist/adapters/local.js.map +1 -1
  20. package/dist/adapters/types.d.ts +2 -0
  21. package/dist/adapters/types.d.ts.map +1 -1
  22. package/dist/agents/draftAnalyzer.d.ts +54 -0
  23. package/dist/agents/draftAnalyzer.d.ts.map +1 -0
  24. package/dist/agents/draftAnalyzer.js +251 -0
  25. package/dist/agents/draftAnalyzer.js.map +1 -0
  26. package/dist/agents/pairPipeline.d.ts +16 -4
  27. package/dist/agents/pairPipeline.d.ts.map +1 -1
  28. package/dist/agents/pairPipeline.js +68 -48
  29. package/dist/agents/pairPipeline.js.map +1 -1
  30. package/dist/agents/reviewer.d.ts.map +1 -1
  31. package/dist/agents/reviewer.js +1 -0
  32. package/dist/agents/reviewer.js.map +1 -1
  33. package/dist/agents/worker.d.ts.map +1 -1
  34. package/dist/agents/worker.js +1 -0
  35. package/dist/agents/worker.js.map +1 -1
  36. package/dist/automation/autonomousRunner.d.ts +9 -0
  37. package/dist/automation/autonomousRunner.d.ts.map +1 -1
  38. package/dist/automation/autonomousRunner.js +18 -4
  39. package/dist/automation/autonomousRunner.js.map +1 -1
  40. package/dist/automation/longRunningMonitor.d.ts.map +1 -1
  41. package/dist/automation/longRunningMonitor.js +128 -8
  42. package/dist/automation/longRunningMonitor.js.map +1 -1
  43. package/dist/automation/runnerExecution.d.ts +6 -1
  44. package/dist/automation/runnerExecution.d.ts.map +1 -1
  45. package/dist/automation/runnerExecution.js +46 -5
  46. package/dist/automation/runnerExecution.js.map +1 -1
  47. package/dist/automation/runnerState.d.ts.map +1 -1
  48. package/dist/automation/runnerState.js +1 -2
  49. package/dist/automation/runnerState.js.map +1 -1
  50. package/dist/automation/scheduler.d.ts.map +1 -1
  51. package/dist/automation/scheduler.js +13 -6
  52. package/dist/automation/scheduler.js.map +1 -1
  53. package/dist/cli/checkHandler.d.ts +2 -0
  54. package/dist/cli/checkHandler.d.ts.map +1 -1
  55. package/dist/cli/checkHandler.js +96 -1
  56. package/dist/cli/checkHandler.js.map +1 -1
  57. package/dist/cli/daemon.d.ts +30 -0
  58. package/dist/cli/daemon.d.ts.map +1 -0
  59. package/dist/cli/daemon.js +141 -0
  60. package/dist/cli/daemon.js.map +1 -0
  61. package/dist/cli.js +100 -6
  62. package/dist/cli.js.map +1 -1
  63. package/dist/core/config.d.ts +1 -1
  64. package/dist/core/config.d.ts.map +1 -1
  65. package/dist/core/config.js +44 -11
  66. package/dist/core/config.js.map +1 -1
  67. package/dist/core/envFile.d.ts +11 -0
  68. package/dist/core/envFile.d.ts.map +1 -0
  69. package/dist/core/envFile.js +99 -0
  70. package/dist/core/envFile.js.map +1 -0
  71. package/dist/core/service.d.ts.map +1 -1
  72. package/dist/core/service.js +8 -2
  73. package/dist/core/service.js.map +1 -1
  74. package/dist/core/types.d.ts +6 -2
  75. package/dist/core/types.d.ts.map +1 -1
  76. package/dist/index.js +32 -1
  77. package/dist/index.js.map +1 -1
  78. package/dist/issues/graphql/resolvers.d.ts +2 -2
  79. package/dist/issues/schema.d.ts +1 -1
  80. package/dist/knowledge/index.js +5 -5
  81. package/dist/knowledge/index.js.map +1 -1
  82. package/dist/knowledge/store.d.ts.map +1 -1
  83. package/dist/knowledge/store.js +34 -6
  84. package/dist/knowledge/store.js.map +1 -1
  85. package/dist/linear/linear.d.ts.map +1 -1
  86. package/dist/linear/linear.js +58 -19
  87. package/dist/linear/linear.js.map +1 -1
  88. package/dist/locale/prompts/en.d.ts.map +1 -1
  89. package/dist/locale/prompts/en.js +68 -96
  90. package/dist/locale/prompts/en.js.map +1 -1
  91. package/dist/locale/prompts/ko.d.ts.map +1 -1
  92. package/dist/locale/prompts/ko.js +68 -96
  93. package/dist/locale/prompts/ko.js.map +1 -1
  94. package/dist/locale/types.d.ts +23 -0
  95. package/dist/locale/types.d.ts.map +1 -1
  96. package/dist/registry/graphql/resolvers.d.ts +15 -15
  97. package/dist/registry/schema.d.ts +4 -4
  98. package/dist/support/planner.d.ts +8 -0
  99. package/dist/support/planner.d.ts.map +1 -1
  100. package/dist/support/planner.js +3 -1
  101. package/dist/support/planner.js.map +1 -1
  102. package/dist/support/web.d.ts.map +1 -1
  103. package/dist/support/web.js +56 -19
  104. package/dist/support/web.js.map +1 -1
  105. package/dist/taskState/store.d.ts.map +1 -1
  106. package/dist/taskState/store.js +6 -2
  107. package/dist/taskState/store.js.map +1 -1
  108. package/package.json +6 -2
@@ -11,7 +11,7 @@ export declare const registryResolvers: {
11
11
  name: string;
12
12
  qualifiedName: string;
13
13
  filePath: string;
14
- status: "experimental" | "deprecated" | "planned" | "active" | "broken";
14
+ status: "active" | "experimental" | "deprecated" | "planned" | "broken";
15
15
  hasTests: boolean;
16
16
  riskLevel: "medium" | "low" | "high";
17
17
  description: string;
@@ -54,7 +54,7 @@ export declare const registryResolvers: {
54
54
  name: string;
55
55
  qualifiedName: string;
56
56
  filePath: string;
57
- status: "experimental" | "deprecated" | "planned" | "active" | "broken";
57
+ status: "active" | "experimental" | "deprecated" | "planned" | "broken";
58
58
  hasTests: boolean;
59
59
  riskLevel: "medium" | "low" | "high";
60
60
  description: string;
@@ -106,7 +106,7 @@ export declare const registryResolvers: {
106
106
  name: string;
107
107
  qualifiedName: string;
108
108
  filePath: string;
109
- status: "experimental" | "deprecated" | "planned" | "active" | "broken";
109
+ status: "active" | "experimental" | "deprecated" | "planned" | "broken";
110
110
  hasTests: boolean;
111
111
  riskLevel: "medium" | "low" | "high";
112
112
  description: string;
@@ -167,7 +167,7 @@ export declare const registryResolvers: {
167
167
  name: string;
168
168
  qualifiedName: string;
169
169
  filePath: string;
170
- status: "experimental" | "deprecated" | "planned" | "active" | "broken";
170
+ status: "active" | "experimental" | "deprecated" | "planned" | "broken";
171
171
  hasTests: boolean;
172
172
  riskLevel: "medium" | "low" | "high";
173
173
  description: string;
@@ -210,7 +210,7 @@ export declare const registryResolvers: {
210
210
  name: string;
211
211
  qualifiedName: string;
212
212
  filePath: string;
213
- status: "experimental" | "deprecated" | "planned" | "active" | "broken";
213
+ status: "active" | "experimental" | "deprecated" | "planned" | "broken";
214
214
  hasTests: boolean;
215
215
  riskLevel: "medium" | "low" | "high";
216
216
  description: string;
@@ -253,7 +253,7 @@ export declare const registryResolvers: {
253
253
  name: string;
254
254
  qualifiedName: string;
255
255
  filePath: string;
256
- status: "experimental" | "deprecated" | "planned" | "active" | "broken";
256
+ status: "active" | "experimental" | "deprecated" | "planned" | "broken";
257
257
  hasTests: boolean;
258
258
  riskLevel: "medium" | "low" | "high";
259
259
  description: string;
@@ -297,7 +297,7 @@ export declare const registryResolvers: {
297
297
  name: string;
298
298
  qualifiedName: string;
299
299
  filePath: string;
300
- status: "experimental" | "deprecated" | "planned" | "active" | "broken";
300
+ status: "active" | "experimental" | "deprecated" | "planned" | "broken";
301
301
  hasTests: boolean;
302
302
  riskLevel: "medium" | "low" | "high";
303
303
  description: string;
@@ -353,7 +353,7 @@ export declare const registryResolvers: {
353
353
  name: string;
354
354
  qualifiedName: string;
355
355
  filePath: string;
356
- status: "experimental" | "deprecated" | "planned" | "active" | "broken";
356
+ status: "active" | "experimental" | "deprecated" | "planned" | "broken";
357
357
  hasTests: boolean;
358
358
  riskLevel: "medium" | "low" | "high";
359
359
  description: string;
@@ -398,7 +398,7 @@ export declare const registryResolvers: {
398
398
  name: string;
399
399
  qualifiedName: string;
400
400
  filePath: string;
401
- status: "experimental" | "deprecated" | "planned" | "active" | "broken";
401
+ status: "active" | "experimental" | "deprecated" | "planned" | "broken";
402
402
  hasTests: boolean;
403
403
  riskLevel: "medium" | "low" | "high";
404
404
  description: string;
@@ -441,7 +441,7 @@ export declare const registryResolvers: {
441
441
  name: string;
442
442
  qualifiedName: string;
443
443
  filePath: string;
444
- status: "experimental" | "deprecated" | "planned" | "active" | "broken";
444
+ status: "active" | "experimental" | "deprecated" | "planned" | "broken";
445
445
  hasTests: boolean;
446
446
  riskLevel: "medium" | "low" | "high";
447
447
  description: string;
@@ -485,7 +485,7 @@ export declare const registryResolvers: {
485
485
  name: string;
486
486
  qualifiedName: string;
487
487
  filePath: string;
488
- status: "experimental" | "deprecated" | "planned" | "active" | "broken";
488
+ status: "active" | "experimental" | "deprecated" | "planned" | "broken";
489
489
  hasTests: boolean;
490
490
  riskLevel: "medium" | "low" | "high";
491
491
  description: string;
@@ -532,7 +532,7 @@ export declare const registryResolvers: {
532
532
  name: string;
533
533
  qualifiedName: string;
534
534
  filePath: string;
535
- status: "experimental" | "deprecated" | "planned" | "active" | "broken";
535
+ status: "active" | "experimental" | "deprecated" | "planned" | "broken";
536
536
  hasTests: boolean;
537
537
  riskLevel: "medium" | "low" | "high";
538
538
  description: string;
@@ -577,7 +577,7 @@ export declare const registryResolvers: {
577
577
  name: string;
578
578
  qualifiedName: string;
579
579
  filePath: string;
580
- status: "experimental" | "deprecated" | "planned" | "active" | "broken";
580
+ status: "active" | "experimental" | "deprecated" | "planned" | "broken";
581
581
  hasTests: boolean;
582
582
  riskLevel: "medium" | "low" | "high";
583
583
  description: string;
@@ -622,7 +622,7 @@ export declare const registryResolvers: {
622
622
  name: string;
623
623
  qualifiedName: string;
624
624
  filePath: string;
625
- status: "experimental" | "deprecated" | "planned" | "active" | "broken";
625
+ status: "active" | "experimental" | "deprecated" | "planned" | "broken";
626
626
  hasTests: boolean;
627
627
  riskLevel: "medium" | "low" | "high";
628
628
  description: string;
@@ -666,7 +666,7 @@ export declare const registryResolvers: {
666
666
  name: string;
667
667
  qualifiedName: string;
668
668
  filePath: string;
669
- status: "experimental" | "deprecated" | "planned" | "active" | "broken";
669
+ status: "active" | "experimental" | "deprecated" | "planned" | "broken";
670
670
  hasTests: boolean;
671
671
  riskLevel: "medium" | "low" | "high";
672
672
  description: string;
@@ -7,10 +7,10 @@ export declare const EntityKindSchema: z.ZodEnum<{
7
7
  constant: "constant";
8
8
  }>;
9
9
  export declare const EntityStatusSchema: z.ZodEnum<{
10
+ active: "active";
10
11
  experimental: "experimental";
11
12
  deprecated: "deprecated";
12
13
  planned: "planned";
13
- active: "active";
14
14
  broken: "broken";
15
15
  }>;
16
16
  export declare const RiskLevelSchema: z.ZodEnum<{
@@ -124,10 +124,10 @@ export declare const CodeEntitySchema: z.ZodObject<{
124
124
  lineEnd: z.ZodOptional<z.ZodNumber>;
125
125
  signature: z.ZodOptional<z.ZodString>;
126
126
  status: z.ZodDefault<z.ZodEnum<{
127
+ active: "active";
127
128
  experimental: "experimental";
128
129
  deprecated: "deprecated";
129
130
  planned: "planned";
130
- active: "active";
131
131
  broken: "broken";
132
132
  }>>;
133
133
  deprecatedAt: z.ZodOptional<z.ZodString>;
@@ -184,10 +184,10 @@ export declare const CodeEntityFilterSchema: z.ZodObject<{
184
184
  constant: "constant";
185
185
  }>>>;
186
186
  status: z.ZodOptional<z.ZodArray<z.ZodEnum<{
187
+ active: "active";
187
188
  experimental: "experimental";
188
189
  deprecated: "deprecated";
189
190
  planned: "planned";
190
- active: "active";
191
191
  broken: "broken";
192
192
  }>>>;
193
193
  filePath: z.ZodOptional<z.ZodString>;
@@ -223,10 +223,10 @@ export declare const FileBriefSchema: z.ZodObject<{
223
223
  lineEnd: z.ZodOptional<z.ZodNumber>;
224
224
  signature: z.ZodOptional<z.ZodString>;
225
225
  status: z.ZodDefault<z.ZodEnum<{
226
+ active: "active";
226
227
  experimental: "experimental";
227
228
  deprecated: "deprecated";
228
229
  planned: "planned";
229
- active: "active";
230
230
  broken: "broken";
231
231
  }>>;
232
232
  deprecatedAt: z.ZodOptional<z.ZodString>;
@@ -11,6 +11,14 @@ export interface PlannerOptions {
11
11
  targetMinutes?: number;
12
12
  onLog?: (line: string) => void;
13
13
  impactAnalysis?: ImpactAnalysis;
14
+ /** Draft Analyzer 결과 (Haiku 사전 분석) */
15
+ draftAnalysis?: {
16
+ taskType: string;
17
+ intentSummary: string;
18
+ relevantFiles: string[];
19
+ suggestedApproach: string;
20
+ projectStats?: string;
21
+ };
14
22
  }
15
23
  export interface SubTask {
16
24
  title: string;
@@ -1 +1 @@
1
- {"version":3,"file":"planner.d.ts","sourceRoot":"","sources":["../../src/support/planner.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,KAAK,QAAQ,EAAyC,MAAM,kBAAkB,CAAC;AAExF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAI5D,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAgBD;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CA6BhF;AA6RD;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAWrE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAwB3D;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,GAAE,MAAW,EAAE,cAAc,GAAE,OAAe,GAAG,OAAO,CAOpH;AAID;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CA6BjE"}
1
+ {"version":3,"file":"planner.d.ts","sourceRoot":"","sources":["../../src/support/planner.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,KAAK,QAAQ,EAAyC,MAAM,kBAAkB,CAAC;AAExF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAK5D,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,sCAAsC;IACtC,aAAa,CAAC,EAAE;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAiBD;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CA6BhF;AA6RD;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAWrE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAwB3D;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,GAAE,MAAW,EAAE,cAAc,GAAE,OAAe,GAAG,OAAO,CAOpH;AAID;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CA6BjE"}
@@ -6,6 +6,7 @@ import { spawn } from 'node:child_process';
6
6
  import { writeFileSync, unlinkSync } from 'node:fs';
7
7
  import { extractCostFromStreamJson, formatCost } from './costTracker.js';
8
8
  import { t, getPrompts } from '../locale/index.js';
9
+ import { buildWorkerEnv } from '../adapters/envPath.js';
9
10
  // Prompts
10
11
  function buildPlannerPrompt(options) {
11
12
  return getPrompts().buildPlannerPrompt({
@@ -14,6 +15,7 @@ function buildPlannerPrompt(options) {
14
15
  projectName: options.projectName || options.projectPath,
15
16
  targetMinutes: options.targetMinutes ?? 25,
16
17
  impactAnalysis: options.impactAnalysis ?? undefined,
18
+ draftAnalysis: options.draftAnalysis,
17
19
  });
18
20
  }
19
21
  // Planner Execution
@@ -88,7 +90,7 @@ async function runClaudeCli(prompt, timeoutMs, model, onLog) {
88
90
  const proc = spawn('claude', args, {
89
91
  shell: false,
90
92
  cwd: '/tmp', // Neutral dir — no project .claude/ settings loaded
91
- env: process.env,
93
+ env: buildWorkerEnv(process.env),
92
94
  stdio: ['ignore', 'pipe', 'pipe'],
93
95
  });
94
96
  let output = '';
@@ -1 +1 @@
1
- {"version":3,"file":"planner.js","sourceRoot":"","sources":["../../src/support/planner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"planner.js","sourceRoot":"","sources":["../../src/support/planner.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/support/web.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAkF1E;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAoB3D;AAYD,wBAAsB,cAAc,CAAC,IAAI,GAAE,MAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAq1BvE;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAKnD"}
1
+ {"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/support/web.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAmH1E;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAoB3D;AAYD,wBAAsB,cAAc,CAAC,IAAI,GAAE,MAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAy1BvE;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAKnD"}
@@ -26,6 +26,40 @@ import { handleGraphQL, isGraphQLRequest } from '../issues/graphql/server.js';
26
26
  import { ISSUE_BOARD_HTML } from '../issues/issueBoardHtml.js';
27
27
  let server = null;
28
28
  let runnerRef;
29
+ // CORS origin allowlist — hostname-strict match (no substring/prefix pitfalls)
30
+ function isAllowedOrigin(origin) {
31
+ let url;
32
+ try {
33
+ url = new URL(origin);
34
+ }
35
+ catch {
36
+ return false;
37
+ }
38
+ const { protocol, hostname } = url;
39
+ if (protocol !== 'http:' && protocol !== 'https:')
40
+ return false;
41
+ // Exact hostname matches
42
+ if (hostname === 'localhost' || hostname === '127.0.0.1')
43
+ return true;
44
+ if (hostname === 'tauri.localhost')
45
+ return true;
46
+ // Tailscale CGNAT range: 100.64.0.0/10 → first octet 100, second 64–127
47
+ const tailscaleMatch = hostname.match(/^100\.(\d{1,3})\.\d{1,3}\.\d{1,3}$/);
48
+ if (tailscaleMatch) {
49
+ const second = Number(tailscaleMatch[1]);
50
+ if (second >= 64 && second <= 127)
51
+ return true;
52
+ }
53
+ return false;
54
+ }
55
+ // Never leak raw Error objects (which include stack traces in many runtimes)
56
+ // or arbitrary thrown values to HTTP responses.
57
+ function safeErrorMessage(err) {
58
+ if (err instanceof Error && typeof err.message === 'string' && err.message) {
59
+ return err.message;
60
+ }
61
+ return 'Internal error';
62
+ }
29
63
  const execTasks = new Map();
30
64
  function cleanupExecTask(taskId) {
31
65
  setTimeout(() => { execTasks.delete(taskId); }, 3600000); // 1 hour
@@ -103,12 +137,9 @@ export async function startWebServer(port = 3847) {
103
137
  return new Promise((resolve, reject) => {
104
138
  server = createServer(async (req, res) => {
105
139
  const url = req.url?.split('?')[0] || '/';
106
- // CORS: allow localhost and Tailscale network
140
+ // CORS: allow localhost, Tauri webview, and Tailscale network
107
141
  const origin = req.headers.origin;
108
- if (origin && (origin.startsWith('http://localhost:') ||
109
- origin.startsWith('http://127.0.0.1:') ||
110
- origin.startsWith('http://100.') // Tailscale CGNAT range (100.64.0.0/10)
111
- )) {
142
+ if (origin && isAllowedOrigin(origin)) {
112
143
  res.setHeader('Access-Control-Allow-Origin', origin);
113
144
  res.setHeader('Access-Control-Allow-Methods', 'GET, POST, DELETE');
114
145
  }
@@ -231,7 +262,7 @@ export async function startWebServer(port = 3847) {
231
262
  }
232
263
  catch (e) {
233
264
  res.writeHead(500, { 'Content-Type': 'application/json' });
234
- res.end(JSON.stringify({ error: String(e) }));
265
+ res.end(JSON.stringify({ error: safeErrorMessage(e) }));
235
266
  }
236
267
  // ---- Pin project ----
237
268
  }
@@ -312,7 +343,7 @@ export async function startWebServer(port = 3847) {
312
343
  catch (error) {
313
344
  console.error('[Web] Failed to move issue to Todo:', error);
314
345
  res.writeHead(500, { 'Content-Type': 'application/json' });
315
- res.end(JSON.stringify({ error: String(error) }));
346
+ res.end(JSON.stringify({ error: safeErrorMessage(error) }));
316
347
  }
317
348
  // ---- Heartbeat (manual trigger) ----
318
349
  }
@@ -376,7 +407,7 @@ export async function startWebServer(port = 3847) {
376
407
  }
377
408
  catch (error) {
378
409
  res.writeHead(500, { 'Content-Type': 'application/json' });
379
- res.end(JSON.stringify({ error: String(error) }));
410
+ res.end(JSON.stringify({ error: safeErrorMessage(error) }));
380
411
  }
381
412
  // ---- Trigger PR Processor ----
382
413
  }
@@ -396,7 +427,7 @@ export async function startWebServer(port = 3847) {
396
427
  }
397
428
  catch (error) {
398
429
  res.writeHead(500, { 'Content-Type': 'application/json' });
399
- res.end(JSON.stringify({ error: String(error) }));
430
+ res.end(JSON.stringify({ error: safeErrorMessage(error) }));
400
431
  }
401
432
  // ---- CI Worker Status ----
402
433
  }
@@ -409,7 +440,7 @@ export async function startWebServer(port = 3847) {
409
440
  }
410
441
  catch (error) {
411
442
  res.writeHead(500, { 'Content-Type': 'application/json' });
412
- res.end(JSON.stringify({ error: String(error) }));
443
+ res.end(JSON.stringify({ error: safeErrorMessage(error) }));
413
444
  }
414
445
  // ---- Stuck/Failed Issues ----
415
446
  }
@@ -423,7 +454,7 @@ export async function startWebServer(port = 3847) {
423
454
  catch (error) {
424
455
  console.error('[Web] Failed to fetch stuck issues:', error);
425
456
  res.writeHead(500, { 'Content-Type': 'application/json' });
426
- res.end(JSON.stringify({ error: String(error) }));
457
+ res.end(JSON.stringify({ error: safeErrorMessage(error) }));
427
458
  }
428
459
  // ---- Chat history ----
429
460
  }
@@ -589,7 +620,7 @@ export async function startWebServer(port = 3847) {
589
620
  }
590
621
  catch (e) {
591
622
  res.writeHead(500, { 'Content-Type': 'application/json' });
592
- res.end(JSON.stringify({ error: String(e) }));
623
+ res.end(JSON.stringify({ error: safeErrorMessage(e) }));
593
624
  }
594
625
  // ---- Service control: restart ----
595
626
  }
@@ -608,7 +639,7 @@ export async function startWebServer(port = 3847) {
608
639
  }
609
640
  catch (e) {
610
641
  res.writeHead(500, { 'Content-Type': 'application/json' });
611
- res.end(JSON.stringify({ error: String(e) }));
642
+ res.end(JSON.stringify({ error: safeErrorMessage(e) }));
612
643
  }
613
644
  // ---- Knowledge Graph: project health ----
614
645
  }
@@ -639,7 +670,7 @@ export async function startWebServer(port = 3847) {
639
670
  }
640
671
  catch (e) {
641
672
  res.writeHead(500, { 'Content-Type': 'application/json' });
642
- res.end(JSON.stringify({ error: String(e) }));
673
+ res.end(JSON.stringify({ error: safeErrorMessage(e) }));
643
674
  }
644
675
  }
645
676
  // ---- Knowledge Graph: list all ----
@@ -665,7 +696,7 @@ export async function startWebServer(port = 3847) {
665
696
  }
666
697
  catch (e) {
667
698
  res.writeHead(500, { 'Content-Type': 'application/json' });
668
- res.end(JSON.stringify({ error: String(e) }));
699
+ res.end(JSON.stringify({ error: safeErrorMessage(e) }));
669
700
  }
670
701
  // ---- Knowledge Graph: trigger scan ----
671
702
  }
@@ -708,18 +739,24 @@ export async function startWebServer(port = 3847) {
708
739
  const body = await readBody(req);
709
740
  try {
710
741
  const config = JSON.parse(body);
711
- if (!config.id || !config.name || !config.checkCommand || !config.completionCheck) {
742
+ if (!config.id ||
743
+ !config.name ||
744
+ !Array.isArray(config.checkCommand) ||
745
+ config.checkCommand.length === 0 ||
746
+ !config.completionCheck) {
712
747
  res.writeHead(400, { 'Content-Type': 'application/json' });
713
- res.end(JSON.stringify({ error: 'Missing required fields: id, name, checkCommand, completionCheck' }));
748
+ res.end(JSON.stringify({
749
+ error: 'Missing or invalid required fields: id, name, checkCommand (string[]), completionCheck',
750
+ }));
714
751
  return;
715
752
  }
716
753
  const monitor = registerMonitor(config);
717
754
  res.writeHead(201, { 'Content-Type': 'application/json' });
718
755
  res.end(JSON.stringify(monitor));
719
756
  }
720
- catch {
757
+ catch (e) {
721
758
  res.writeHead(400, { 'Content-Type': 'application/json' });
722
- res.end(JSON.stringify({ error: 'Invalid JSON' }));
759
+ res.end(JSON.stringify({ error: safeErrorMessage(e) }));
723
760
  }
724
761
  // ---- Monitors: delete ----
725
762
  }