@planu/cli 0.77.0 → 0.79.0

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 (125) hide show
  1. package/dist/cli/commands/serve.d.ts.map +1 -1
  2. package/dist/cli/commands/serve.js +1 -1
  3. package/dist/cli/commands/serve.js.map +1 -1
  4. package/dist/config/contradiction-patterns.json +83 -0
  5. package/dist/config/estimation-tables.json +49 -0
  6. package/dist/config/license-plans.json +6 -1
  7. package/dist/engine/ci-generator/local-script.d.ts +8 -0
  8. package/dist/engine/ci-generator/local-script.d.ts.map +1 -0
  9. package/dist/engine/ci-generator/local-script.js +177 -0
  10. package/dist/engine/ci-generator/local-script.js.map +1 -0
  11. package/dist/engine/ci-generator/planu-steps.d.ts.map +1 -1
  12. package/dist/engine/ci-generator/planu-steps.js +37 -22
  13. package/dist/engine/ci-generator/planu-steps.js.map +1 -1
  14. package/dist/engine/config-loader.d.ts +73 -0
  15. package/dist/engine/config-loader.d.ts.map +1 -0
  16. package/dist/engine/config-loader.js +246 -0
  17. package/dist/engine/config-loader.js.map +1 -0
  18. package/dist/engine/config-schemas.d.ts +64 -0
  19. package/dist/engine/config-schemas.d.ts.map +1 -0
  20. package/dist/engine/config-schemas.js +55 -0
  21. package/dist/engine/config-schemas.js.map +1 -0
  22. package/dist/engine/telemetry/index.d.ts +3 -0
  23. package/dist/engine/telemetry/index.d.ts.map +1 -0
  24. package/dist/engine/telemetry/index.js +4 -0
  25. package/dist/engine/telemetry/index.js.map +1 -0
  26. package/dist/engine/telemetry/telemetry-client.d.ts +7 -0
  27. package/dist/engine/telemetry/telemetry-client.d.ts.map +1 -0
  28. package/dist/engine/telemetry/telemetry-client.js +29 -0
  29. package/dist/engine/telemetry/telemetry-client.js.map +1 -0
  30. package/dist/engine/telemetry/telemetry-store.d.ts +11 -0
  31. package/dist/engine/telemetry/telemetry-store.d.ts.map +1 -0
  32. package/dist/engine/telemetry/telemetry-store.js +55 -0
  33. package/dist/engine/telemetry/telemetry-store.js.map +1 -0
  34. package/dist/index.js +12 -2
  35. package/dist/index.js.map +1 -1
  36. package/dist/storage/ideas-store.d.ts +15 -0
  37. package/dist/storage/ideas-store.d.ts.map +1 -0
  38. package/dist/storage/ideas-store.js +37 -0
  39. package/dist/storage/ideas-store.js.map +1 -0
  40. package/dist/tools/capture-idea-handler.d.ts +4 -0
  41. package/dist/tools/capture-idea-handler.d.ts.map +1 -0
  42. package/dist/tools/capture-idea-handler.js +39 -0
  43. package/dist/tools/capture-idea-handler.js.map +1 -0
  44. package/dist/tools/ci-planu-handler.d.ts +2 -2
  45. package/dist/tools/ci-planu-handler.d.ts.map +1 -1
  46. package/dist/tools/ci-planu-handler.js +55 -22
  47. package/dist/tools/ci-planu-handler.js.map +1 -1
  48. package/dist/tools/configure-telemetry.d.ts +3 -0
  49. package/dist/tools/configure-telemetry.d.ts.map +1 -0
  50. package/dist/tools/configure-telemetry.js +55 -0
  51. package/dist/tools/configure-telemetry.js.map +1 -0
  52. package/dist/tools/discard-idea-handler.d.ts +4 -0
  53. package/dist/tools/discard-idea-handler.d.ts.map +1 -0
  54. package/dist/tools/discard-idea-handler.js +27 -0
  55. package/dist/tools/discard-idea-handler.js.map +1 -0
  56. package/dist/tools/git/cleanup-ops.d.ts +15 -0
  57. package/dist/tools/git/cleanup-ops.d.ts.map +1 -0
  58. package/dist/tools/git/cleanup-ops.js +417 -0
  59. package/dist/tools/git/cleanup-ops.js.map +1 -0
  60. package/dist/tools/init-project/handler.d.ts.map +1 -1
  61. package/dist/tools/init-project/handler.js +22 -0
  62. package/dist/tools/init-project/handler.js.map +1 -1
  63. package/dist/tools/init-project/result-builder.d.ts.map +1 -1
  64. package/dist/tools/init-project/result-builder.js +5 -1
  65. package/dist/tools/init-project/result-builder.js.map +1 -1
  66. package/dist/tools/license-gate.d.ts +6 -0
  67. package/dist/tools/license-gate.d.ts.map +1 -1
  68. package/dist/tools/license-gate.js +14 -0
  69. package/dist/tools/license-gate.js.map +1 -1
  70. package/dist/tools/list-backlog-handler.d.ts +4 -0
  71. package/dist/tools/list-backlog-handler.d.ts.map +1 -0
  72. package/dist/tools/list-backlog-handler.js +60 -0
  73. package/dist/tools/list-backlog-handler.js.map +1 -0
  74. package/dist/tools/manage-git.d.ts.map +1 -1
  75. package/dist/tools/manage-git.js +3 -0
  76. package/dist/tools/manage-git.js.map +1 -1
  77. package/dist/tools/promote-idea-handler.d.ts +4 -0
  78. package/dist/tools/promote-idea-handler.d.ts.map +1 -0
  79. package/dist/tools/promote-idea-handler.js +51 -0
  80. package/dist/tools/promote-idea-handler.js.map +1 -0
  81. package/dist/tools/register-backlog-tools.d.ts +3 -0
  82. package/dist/tools/register-backlog-tools.d.ts.map +1 -0
  83. package/dist/tools/register-backlog-tools.js +81 -0
  84. package/dist/tools/register-backlog-tools.js.map +1 -0
  85. package/dist/tools/register-ci-tools.d.ts.map +1 -1
  86. package/dist/tools/register-ci-tools.js +8 -0
  87. package/dist/tools/register-ci-tools.js.map +1 -1
  88. package/dist/tools/register-telemetry-tools.d.ts +3 -0
  89. package/dist/tools/register-telemetry-tools.d.ts.map +1 -0
  90. package/dist/tools/register-telemetry-tools.js +19 -0
  91. package/dist/tools/register-telemetry-tools.js.map +1 -0
  92. package/dist/tools/schemas/infra.d.ts +1 -1
  93. package/dist/tools/schemas/lifecycle.d.ts +1 -0
  94. package/dist/tools/schemas/lifecycle.d.ts.map +1 -1
  95. package/dist/tools/schemas/lifecycle.js +2 -1
  96. package/dist/tools/schemas/lifecycle.js.map +1 -1
  97. package/dist/tools/update-status-actions.d.ts.map +1 -1
  98. package/dist/tools/update-status-actions.js +12 -0
  99. package/dist/tools/update-status-actions.js.map +1 -1
  100. package/dist/types/ci.d.ts +16 -1
  101. package/dist/types/ci.d.ts.map +1 -1
  102. package/dist/types/common/tech-enums.d.ts +1 -1
  103. package/dist/types/common/tech-enums.d.ts.map +1 -1
  104. package/dist/types/estimation.d.ts +34 -0
  105. package/dist/types/estimation.d.ts.map +1 -1
  106. package/dist/types/git.d.ts +24 -0
  107. package/dist/types/git.d.ts.map +1 -1
  108. package/dist/types/ideas.d.ts +37 -0
  109. package/dist/types/ideas.d.ts.map +1 -0
  110. package/dist/types/ideas.js +3 -0
  111. package/dist/types/ideas.js.map +1 -0
  112. package/dist/types/index.d.ts +2 -0
  113. package/dist/types/index.d.ts.map +1 -1
  114. package/dist/types/index.js +2 -0
  115. package/dist/types/index.js.map +1 -1
  116. package/dist/types/project/planu-config.d.ts +2 -0
  117. package/dist/types/project/planu-config.d.ts.map +1 -1
  118. package/dist/types/telemetry.d.ts +24 -0
  119. package/dist/types/telemetry.d.ts.map +1 -0
  120. package/dist/types/telemetry.js +3 -0
  121. package/dist/types/telemetry.js.map +1 -0
  122. package/package.json +1 -1
  123. package/src/config/contradiction-patterns.json +83 -0
  124. package/src/config/estimation-tables.json +49 -0
  125. package/src/config/license-plans.json +6 -1
@@ -0,0 +1,246 @@
1
+ // engine/config-loader.ts — Canonical 3-layer config loader (SPEC-205)
2
+ //
3
+ // THE PATTERN:
4
+ // Layer 1 (lowest precedence): src/config/{area}.json — system defaults, always present
5
+ // Layer 2: data/global/{area}-custom.json — user-level global overrides
6
+ // Layer 3 (highest precedence): data/projects/{hash}/config/{area}-overrides.json — project overrides
7
+ //
8
+ // Items are merged by `id` field: an override with the same `id` replaces the system default.
9
+ // Items with new `id` values are appended.
10
+ //
11
+ // USAGE FOR FUTURE SPEC AUTHORS:
12
+ // 1. Create src/config/{area}.json with your default items (each must have an `id` field)
13
+ // 2. Define a Zod schema for a single item, then wrap with z.array()
14
+ // 3. Instantiate: new ConfigLoader<YourType>('your-area', yourItemArraySchema)
15
+ // 4. Call loader.load(projectPath?) to get merged items
16
+ //
17
+ // This module only imports from types/ — respects the dependency rule.
18
+ import { readFileSync } from 'node:fs';
19
+ import { readFile } from 'node:fs/promises';
20
+ import { createRequire } from 'node:module';
21
+ import { join, dirname } from 'node:path';
22
+ import { fileURLToPath } from 'node:url';
23
+ const __dirname = dirname(fileURLToPath(import.meta.url));
24
+ const DATA_DIR = join(__dirname, '..', '..', 'data');
25
+ /**
26
+ * Canonical 3-layer configuration loader.
27
+ *
28
+ * Generalizes the pattern from catalog-loader.ts (SPEC-054) into a reusable
29
+ * class that any module can use to make its configuration extensible.
30
+ *
31
+ * @typeParam T - The type of a single configuration item (must have `id: string`)
32
+ */
33
+ export class ConfigLoader {
34
+ area;
35
+ schema;
36
+ require;
37
+ constructor(area, schema) {
38
+ this.area = area;
39
+ this.schema = schema;
40
+ this.require = createRequire(import.meta.url);
41
+ }
42
+ /**
43
+ * Synchronously load and merge all 3 config layers.
44
+ * Safe for module-level initialization.
45
+ */
46
+ load(projectHash) {
47
+ const system = this.loadSystem();
48
+ const global = this.loadGlobalSync();
49
+ const project = projectHash ? this.loadProjectSync(projectHash) : [];
50
+ return this.merge(system, global, project);
51
+ }
52
+ /**
53
+ * Async version of load — preferred when called from async contexts.
54
+ */
55
+ async loadAsync(projectHash) {
56
+ const system = this.loadSystem();
57
+ const global = await this.loadGlobalAsync();
58
+ const project = projectHash ? await this.loadProjectAsync(projectHash) : [];
59
+ return this.merge(system, global, project);
60
+ }
61
+ /**
62
+ * Validate raw data against the schema. Returns parsed items or throws
63
+ * a descriptive error with the exact path of the invalid field.
64
+ */
65
+ validate(data) {
66
+ const result = this.schema.safeParse(data);
67
+ if (result.success) {
68
+ return result.data;
69
+ }
70
+ const details = formatZodError(result.error);
71
+ throw new Error(`Invalid ${this.area} config: ${details}`);
72
+ }
73
+ /**
74
+ * Load only system defaults (src/config/{area}.json).
75
+ */
76
+ loadSystem() {
77
+ try {
78
+ const raw = this.require(`../config/${this.area}.json`);
79
+ return this.validate(raw);
80
+ }
81
+ catch (err) {
82
+ if (err instanceof Error && err.message.includes('Invalid')) {
83
+ throw err;
84
+ }
85
+ throw new Error(`System config not found: src/config/${this.area}.json`, { cause: err });
86
+ }
87
+ }
88
+ // -----------------------------------------------------------------------
89
+ // Private helpers
90
+ // -----------------------------------------------------------------------
91
+ loadGlobalSync() {
92
+ return this.loadFileSync(join(DATA_DIR, 'global', `${this.area}-custom.json`));
93
+ }
94
+ loadProjectSync(projectHash) {
95
+ return this.loadFileSync(join(DATA_DIR, 'projects', projectHash, 'config', `${this.area}-overrides.json`));
96
+ }
97
+ async loadGlobalAsync() {
98
+ return this.loadFileAsync(join(DATA_DIR, 'global', `${this.area}-custom.json`));
99
+ }
100
+ async loadProjectAsync(projectHash) {
101
+ return this.loadFileAsync(join(DATA_DIR, 'projects', projectHash, 'config', `${this.area}-overrides.json`));
102
+ }
103
+ loadFileSync(filePath) {
104
+ try {
105
+ const content = readFileSync(filePath, 'utf-8');
106
+ const parsed = JSON.parse(content);
107
+ return this.validate(parsed);
108
+ }
109
+ catch (err) {
110
+ if (err instanceof Error && err.message.includes('Invalid')) {
111
+ throw err;
112
+ }
113
+ // File does not exist or is unreadable — return empty (optional layer)
114
+ return [];
115
+ }
116
+ }
117
+ async loadFileAsync(filePath) {
118
+ try {
119
+ const content = await readFile(filePath, 'utf-8');
120
+ const parsed = JSON.parse(content);
121
+ return this.validate(parsed);
122
+ }
123
+ catch (err) {
124
+ if (err instanceof Error && err.message.includes('Invalid')) {
125
+ throw err;
126
+ }
127
+ return [];
128
+ }
129
+ }
130
+ /**
131
+ * Merge items from 3 layers by `id`. Higher-precedence layers override
132
+ * lower-precedence items with the same `id`. New ids are appended.
133
+ */
134
+ merge(system, global, project) {
135
+ const map = new Map();
136
+ for (const item of system) {
137
+ map.set(item.id, item);
138
+ }
139
+ for (const item of global) {
140
+ map.set(item.id, item);
141
+ }
142
+ for (const item of project) {
143
+ map.set(item.id, item);
144
+ }
145
+ return [...map.values()];
146
+ }
147
+ }
148
+ /**
149
+ * 3-layer configuration loader for structured (object) configs.
150
+ *
151
+ * Similar to ConfigLoader but works with a single object instead of an array.
152
+ * Override layers are deep-merged (top-level keys only) with the system defaults.
153
+ *
154
+ * @typeParam T - The config object type
155
+ */
156
+ export class ObjectConfigLoader {
157
+ area;
158
+ schema;
159
+ require;
160
+ constructor(area, schema) {
161
+ this.area = area;
162
+ this.schema = schema;
163
+ this.require = createRequire(import.meta.url);
164
+ }
165
+ /** Synchronously load and merge all 3 config layers. */
166
+ load(projectHash) {
167
+ const system = this.loadSystem();
168
+ const global = this.loadFileSync(join(DATA_DIR, 'global', `${this.area}-custom.json`));
169
+ const project = projectHash
170
+ ? this.loadFileSync(join(DATA_DIR, 'projects', projectHash, 'config', `${this.area}-overrides.json`))
171
+ : null;
172
+ return this.merge(system, global, project);
173
+ }
174
+ /** Async version of load. */
175
+ async loadAsync(projectHash) {
176
+ const system = this.loadSystem();
177
+ const global = await this.loadFileAsync(join(DATA_DIR, 'global', `${this.area}-custom.json`));
178
+ const project = projectHash
179
+ ? await this.loadFileAsync(join(DATA_DIR, 'projects', projectHash, 'config', `${this.area}-overrides.json`))
180
+ : null;
181
+ return this.merge(system, global, project);
182
+ }
183
+ /** Validate raw data against the schema. */
184
+ validate(data) {
185
+ const result = this.schema.safeParse(data);
186
+ if (result.success) {
187
+ return result.data;
188
+ }
189
+ const details = formatZodError(result.error);
190
+ throw new Error(`Invalid ${this.area} config: ${details}`);
191
+ }
192
+ /** Load system defaults. */
193
+ loadSystem() {
194
+ try {
195
+ const raw = this.require(`../config/${this.area}.json`);
196
+ return this.validate(raw);
197
+ }
198
+ catch (err) {
199
+ if (err instanceof Error && err.message.includes('Invalid')) {
200
+ throw err;
201
+ }
202
+ throw new Error(`System config not found: src/config/${this.area}.json`, { cause: err });
203
+ }
204
+ }
205
+ loadFileSync(filePath) {
206
+ try {
207
+ const content = readFileSync(filePath, 'utf-8');
208
+ return JSON.parse(content);
209
+ }
210
+ catch {
211
+ return null;
212
+ }
213
+ }
214
+ async loadFileAsync(filePath) {
215
+ try {
216
+ const content = await readFile(filePath, 'utf-8');
217
+ return JSON.parse(content);
218
+ }
219
+ catch {
220
+ return null;
221
+ }
222
+ }
223
+ /** Shallow merge: system <- global <- project (top-level keys). */
224
+ merge(system, global, project) {
225
+ let result = { ...system };
226
+ if (global) {
227
+ result = { ...result, ...global };
228
+ }
229
+ if (project) {
230
+ result = { ...result, ...project };
231
+ }
232
+ return this.validate(result);
233
+ }
234
+ }
235
+ /**
236
+ * Format a ZodError into a human-readable string with field paths.
237
+ */
238
+ function formatZodError(error) {
239
+ return error.issues
240
+ .map((issue) => {
241
+ const path = issue.path.length > 0 ? issue.path.join('.') : '(root)';
242
+ return `${path}: ${issue.message}`;
243
+ })
244
+ .join('; ');
245
+ }
246
+ //# sourceMappingURL=config-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../src/engine/config-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ import { z } from 'zod';
2
+ import type { ContradictionPatternDef } from '../types/scope.js';
3
+ import type { EstimationTablesConfig } from '../types/estimation.js';
4
+ export type { ContradictionPatternDef as ContradictionPatternConfig, EstimationTablesConfig };
5
+ export declare const contradictionPatternSchema: z.ZodObject<{
6
+ id: z.ZodString;
7
+ name: z.ZodString;
8
+ sideA: z.ZodArray<z.ZodString>;
9
+ sideB: z.ZodArray<z.ZodString>;
10
+ severity: z.ZodEnum<{
11
+ blocker: "blocker";
12
+ warning: "warning";
13
+ info: "info";
14
+ }>;
15
+ descriptionTemplate: z.ZodString;
16
+ recommendation: z.ZodString;
17
+ }, z.core.$strip>;
18
+ export declare const contradictionPatternsArraySchema: z.ZodArray<z.ZodObject<{
19
+ id: z.ZodString;
20
+ name: z.ZodString;
21
+ sideA: z.ZodArray<z.ZodString>;
22
+ sideB: z.ZodArray<z.ZodString>;
23
+ severity: z.ZodEnum<{
24
+ blocker: "blocker";
25
+ warning: "warning";
26
+ info: "info";
27
+ }>;
28
+ descriptionTemplate: z.ZodString;
29
+ recommendation: z.ZodString;
30
+ }, z.core.$strip>>;
31
+ export declare const estimationTablesSchema: z.ZodObject<{
32
+ defaultConfig: z.ZodObject<{
33
+ defaultLocale: z.ZodString;
34
+ defaultExperienceLevel: z.ZodString;
35
+ hourlyRate: z.ZodNumber;
36
+ pricingOpusPerMToken: z.ZodNumber;
37
+ pricingSonnetPerMToken: z.ZodNumber;
38
+ }, z.core.$strip>;
39
+ baseHoursByType: z.ZodArray<z.ZodObject<{
40
+ id: z.ZodString;
41
+ hours: z.ZodNumber;
42
+ }, z.core.$strip>>;
43
+ scopeMultiplier: z.ZodArray<z.ZodObject<{
44
+ id: z.ZodString;
45
+ multiplier: z.ZodNumber;
46
+ }, z.core.$strip>>;
47
+ difficultyMultiplier: z.ZodArray<z.ZodObject<{
48
+ id: z.ZodString;
49
+ multiplier: z.ZodNumber;
50
+ }, z.core.$strip>>;
51
+ reviewRatio: z.ZodArray<z.ZodObject<{
52
+ id: z.ZodString;
53
+ ratio: z.ZodNumber;
54
+ }, z.core.$strip>>;
55
+ tokensPerDevHour: z.ZodObject<{
56
+ opus: z.ZodNumber;
57
+ sonnet: z.ZodNumber;
58
+ }, z.core.$strip>;
59
+ modeReduction: z.ZodArray<z.ZodObject<{
60
+ id: z.ZodString;
61
+ factor: z.ZodNumber;
62
+ }, z.core.$strip>>;
63
+ }, z.core.$strip>;
64
+ //# sourceMappingURL=config-schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-schemas.d.ts","sourceRoot":"","sources":["../../src/engine/config-schemas.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACrE,YAAY,EAAE,uBAAuB,IAAI,0BAA0B,EAAE,sBAAsB,EAAE,CAAC;AAQ9F,eAAO,MAAM,0BAA0B;;;;;;;;;;;;iBAQrC,CAAC;AAEH,eAAO,MAAM,gCAAgC;;;;;;;;;;;;kBAAsC,CAAC;AA0BpF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiBjC,CAAC"}
@@ -0,0 +1,55 @@
1
+ // engine/config-schemas.ts — Zod schemas for JSON config validation (SPEC-205)
2
+ // Each area that uses ConfigLoader/ObjectConfigLoader defines its schema here.
3
+ import { z } from 'zod';
4
+ // ---------------------------------------------------------------------------
5
+ // Contradiction patterns (used by contradiction-detector.ts)
6
+ // ---------------------------------------------------------------------------
7
+ const conflictSeveritySchema = z.enum(['blocker', 'warning', 'info']);
8
+ export const contradictionPatternSchema = z.object({
9
+ id: z.string().min(1, 'id is required'),
10
+ name: z.string().min(1, 'name is required'),
11
+ sideA: z.array(z.string()).min(1, 'sideA must have at least one keyword'),
12
+ sideB: z.array(z.string()).min(1, 'sideB must have at least one keyword'),
13
+ severity: conflictSeveritySchema,
14
+ descriptionTemplate: z.string().min(1, 'descriptionTemplate is required'),
15
+ recommendation: z.string().min(1, 'recommendation is required'),
16
+ });
17
+ export const contradictionPatternsArraySchema = z.array(contradictionPatternSchema);
18
+ // ---------------------------------------------------------------------------
19
+ // Estimation tables (used by estimator/constants.ts)
20
+ // ---------------------------------------------------------------------------
21
+ const baseHoursEntrySchema = z.object({
22
+ id: z.string().min(1),
23
+ hours: z.number().positive(),
24
+ });
25
+ const multiplierEntrySchema = z.object({
26
+ id: z.string().min(1),
27
+ multiplier: z.number().positive(),
28
+ });
29
+ const ratioEntrySchema = z.object({
30
+ id: z.string().min(1),
31
+ ratio: z.number().min(0).max(1),
32
+ });
33
+ const modeReductionEntrySchema = z.object({
34
+ id: z.string().min(1),
35
+ factor: z.number().min(0).max(1),
36
+ });
37
+ export const estimationTablesSchema = z.object({
38
+ defaultConfig: z.object({
39
+ defaultLocale: z.string(),
40
+ defaultExperienceLevel: z.string(),
41
+ hourlyRate: z.number().positive(),
42
+ pricingOpusPerMToken: z.number().positive(),
43
+ pricingSonnetPerMToken: z.number().positive(),
44
+ }),
45
+ baseHoursByType: z.array(baseHoursEntrySchema),
46
+ scopeMultiplier: z.array(multiplierEntrySchema),
47
+ difficultyMultiplier: z.array(multiplierEntrySchema),
48
+ reviewRatio: z.array(ratioEntrySchema),
49
+ tokensPerDevHour: z.object({
50
+ opus: z.number().positive(),
51
+ sonnet: z.number().positive(),
52
+ }),
53
+ modeReduction: z.array(modeReductionEntrySchema),
54
+ });
55
+ //# sourceMappingURL=config-schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-schemas.js","sourceRoot":"","sources":["../../src/engine/config-schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './telemetry-store.js';
2
+ export * from './telemetry-client.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engine/telemetry/index.ts"],"names":[],"mappings":"AACA,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,4 @@
1
+ // engine/telemetry/index.ts — SPEC-200: Barrel export for telemetry engine
2
+ export * from './telemetry-store.js';
3
+ export * from './telemetry-client.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine/telemetry/index.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { TelemetryEvent } from '../../types/index.js';
2
+ /**
3
+ * Send a telemetry event to Supabase. Fire-and-forget — never awaited by callers.
4
+ * No PII: properties must not contain paths, emails, or user identifiers.
5
+ */
6
+ export declare function sendTelemetryEvent(event: TelemetryEvent): void;
7
+ //# sourceMappingURL=telemetry-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-client.d.ts","sourceRoot":"","sources":["../../../src/engine/telemetry/telemetry-client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAO3D;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAmB9D"}
@@ -0,0 +1,29 @@
1
+ // engine/telemetry/telemetry-client.ts — SPEC-200: Fire-and-forget telemetry POST to Supabase.
2
+ // Never throws — all errors are silently swallowed to avoid blocking tool responses.
3
+ const SUPABASE_URL = 'https://canusqigtzldstnjddio.supabase.co';
4
+ const SUPABASE_ANON_KEY = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImNhbnVzcWlndHpsZHN0bmpkZGlvIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NzI3NTk2MjgsImV4cCI6MjA4ODMzNTYyOH0.Thw1Xgf9_iabOD75J00u35d2k5NsIpUBU9PrqOShxMU';
5
+ const TELEMETRY_ENDPOINT = `${SUPABASE_URL}/rest/v1/telemetry_events`;
6
+ /**
7
+ * Send a telemetry event to Supabase. Fire-and-forget — never awaited by callers.
8
+ * No PII: properties must not contain paths, emails, or user identifiers.
9
+ */
10
+ export function sendTelemetryEvent(event) {
11
+ const payload = {
12
+ event_name: event.event,
13
+ properties: event.properties,
14
+ installation_id: event.installationId,
15
+ };
16
+ fetch(TELEMETRY_ENDPOINT, {
17
+ method: 'POST',
18
+ headers: {
19
+ 'Content-Type': 'application/json',
20
+ apikey: SUPABASE_ANON_KEY,
21
+ Authorization: `Bearer ${SUPABASE_ANON_KEY}`,
22
+ Prefer: 'return=minimal',
23
+ },
24
+ body: JSON.stringify(payload),
25
+ }).catch(() => {
26
+ // Silently swallow all errors — telemetry must never break the tool
27
+ });
28
+ }
29
+ //# sourceMappingURL=telemetry-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-client.js","sourceRoot":"","sources":["../../../src/engine/telemetry/telemetry-client.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,qFAAqF;AAIrF,MAAM,YAAY,GAAG,0CAA0C,CAAC;AAChE,MAAM,iBAAiB,GACrB,kNAAkN,CAAC;AACrN,MAAM,kBAAkB,GAAG,GAAG,YAAY,2BAA2B,CAAC;AAEtE;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAqB;IACtD,MAAM,OAAO,GAAG;QACd,UAAU,EAAE,KAAK,CAAC,KAAK;QACvB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,eAAe,EAAE,KAAK,CAAC,cAAc;KACtC,CAAC;IAEF,KAAK,CAAC,kBAAkB,EAAE;QACxB,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,MAAM,EAAE,iBAAiB;YACzB,aAAa,EAAE,UAAU,iBAAiB,EAAE;YAC5C,MAAM,EAAE,gBAAgB;SACzB;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;KAC9B,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;QACZ,oEAAoE;IACtE,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { TelemetryConfig } from '../../types/index.js';
2
+ export declare function readTelemetryConfig(): Promise<TelemetryConfig | null>;
3
+ export declare function writeTelemetryConfig(config: TelemetryConfig): Promise<void>;
4
+ export declare function getOrCreateInstallationId(): Promise<string>;
5
+ /** Returns true if telemetry is enabled, false otherwise (default: disabled). */
6
+ export declare function isTelemetryEnabled(): Promise<boolean>;
7
+ /** Returns true if the user has never been shown the opt-in prompt. */
8
+ export declare function hasNeverBeenPrompted(): Promise<boolean>;
9
+ /** Mark that the user was shown the opt-in prompt (so we don't show it again). */
10
+ export declare function markAsPrompted(): Promise<void>;
11
+ //# sourceMappingURL=telemetry-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-store.d.ts","sourceRoot":"","sources":["../../../src/engine/telemetry/telemetry-store.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAK5D,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAO3E;AAED,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAGjF;AAED,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,MAAM,CAAC,CAYjE;AAED,iFAAiF;AACjF,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,CAG3D;AAED,uEAAuE;AACvE,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,CAG7D;AAED,kFAAkF;AAClF,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAQpD"}
@@ -0,0 +1,55 @@
1
+ // engine/telemetry/telemetry-store.ts — SPEC-200: Read/write telemetry config from ~/.planu/
2
+ // Stores opt-in preference and installation ID outside the project directory.
3
+ import { readFile, writeFile, mkdir } from 'node:fs/promises';
4
+ import { join } from 'node:path';
5
+ import { homedir } from 'node:os';
6
+ import { randomUUID } from 'node:crypto';
7
+ const PLANU_DIR = join(homedir(), '.planu');
8
+ const TELEMETRY_FILE = join(PLANU_DIR, 'telemetry.json');
9
+ export async function readTelemetryConfig() {
10
+ try {
11
+ const raw = await readFile(TELEMETRY_FILE, 'utf-8');
12
+ return JSON.parse(raw);
13
+ }
14
+ catch {
15
+ return null;
16
+ }
17
+ }
18
+ export async function writeTelemetryConfig(config) {
19
+ await mkdir(PLANU_DIR, { recursive: true });
20
+ await writeFile(TELEMETRY_FILE, JSON.stringify(config, null, 2) + '\n', 'utf-8');
21
+ }
22
+ export async function getOrCreateInstallationId() {
23
+ const config = await readTelemetryConfig();
24
+ if (config?.installationId) {
25
+ return config.installationId;
26
+ }
27
+ const id = randomUUID();
28
+ await writeTelemetryConfig({
29
+ enabled: false,
30
+ installationId: id,
31
+ promptedAt: '',
32
+ });
33
+ return id;
34
+ }
35
+ /** Returns true if telemetry is enabled, false otherwise (default: disabled). */
36
+ export async function isTelemetryEnabled() {
37
+ const config = await readTelemetryConfig();
38
+ return config?.enabled === true;
39
+ }
40
+ /** Returns true if the user has never been shown the opt-in prompt. */
41
+ export async function hasNeverBeenPrompted() {
42
+ const config = await readTelemetryConfig();
43
+ return !config?.promptedAt;
44
+ }
45
+ /** Mark that the user was shown the opt-in prompt (so we don't show it again). */
46
+ export async function markAsPrompted() {
47
+ const existing = await readTelemetryConfig();
48
+ const id = existing?.installationId ?? randomUUID();
49
+ await writeTelemetryConfig({
50
+ enabled: existing?.enabled ?? false,
51
+ installationId: id,
52
+ promptedAt: new Date().toISOString(),
53
+ });
54
+ }
55
+ //# sourceMappingURL=telemetry-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry-store.js","sourceRoot":"","sources":["../../../src/engine/telemetry/telemetry-store.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,8EAA8E;AAE9E,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC5C,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;AAEzD,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAoB,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,MAAuB;IAChE,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,MAAM,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;AACnF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB;IAC7C,MAAM,MAAM,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAC3C,IAAI,MAAM,EAAE,cAAc,EAAE,CAAC;QAC3B,OAAO,MAAM,CAAC,cAAc,CAAC;IAC/B,CAAC;IACD,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;IACxB,MAAM,oBAAoB,CAAC;QACzB,OAAO,EAAE,KAAK;QACd,cAAc,EAAE,EAAE;QAClB,UAAU,EAAE,EAAE;KACf,CAAC,CAAC;IACH,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,iFAAiF;AACjF,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,MAAM,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAC3C,OAAO,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;AAClC,CAAC;AAED,uEAAuE;AACvE,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,MAAM,MAAM,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAC3C,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC;AAC7B,CAAC;AAED,kFAAkF;AAClF,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,QAAQ,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAC7C,MAAM,EAAE,GAAG,QAAQ,EAAE,cAAc,IAAI,UAAU,EAAE,CAAC;IACpD,MAAM,oBAAoB,CAAC;QACzB,OAAO,EAAE,QAAQ,EAAE,OAAO,IAAI,KAAK;QACnC,cAAc,EAAE,EAAE;QAClB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACrC,CAAC,CAAC;AACL,CAAC"}
package/dist/index.js CHANGED
@@ -97,6 +97,8 @@ import { registerWellKnownTools } from './tools/register-well-known-tools.js';
97
97
  import { registerGenerateSpecFromDesignTool } from './tools/register-generate-spec-from-design.js';
98
98
  import { registerOAuthTools } from './tools/register-oauth-tools.js';
99
99
  import { registerElicitationTools } from './tools/register-elicitation-tools.js';
100
+ import { registerTelemetryTools } from './tools/register-telemetry-tools.js';
101
+ import { registerBacklogTools } from './tools/register-backlog-tools.js';
100
102
  import { registerReconcileRulesTool } from './tools/reconcile-rules.js';
101
103
  import { registerReconcileSkillsTool } from './tools/reconcile-skills.js';
102
104
  import { registerReconcileHooksTool } from './tools/reconcile-hooks.js';
@@ -202,9 +204,11 @@ const SERVER_INSTRUCTIONS = [
202
204
  '- Always include actionable next steps after every operation',
203
205
  '- Put machine-readable data in structuredContent, human-readable narrative in content[].text',
204
206
  '- When presenting specs, show: title, summary, key acceptance criteria, estimated effort — not the full JSON',
207
+ '',
208
+ 'IDEAS BACKLOG — automatic capture:',
209
+ '- When a user expresses a non-urgent idea or future possibility (phrases like "sería bueno", "a futuro", "se me ocurre", "what if", "maybe we could"), call capture_idea automatically without asking. Confirm in one line.',
205
210
  ].join('\n');
206
- function createMcpServer() {
207
- const s = withToolTracking(new McpServer({ name: 'planu', version: PLANU_VERSION }, { instructions: SERVER_INSTRUCTIONS }));
211
+ function registerAllTools(s) {
208
212
  registerResources(s);
209
213
  registerSpecTools(s);
210
214
  registerPlatformTools(s);
@@ -274,10 +278,16 @@ function createMcpServer() {
274
278
  registerGenerateSpecFromDesignTool(s);
275
279
  registerOAuthTools(s);
276
280
  registerElicitationTools(s);
281
+ registerTelemetryTools(s);
277
282
  registerReconcileRulesTool(s);
278
283
  registerReconcileSkillsTool(s);
279
284
  registerReconcileHooksTool(s);
285
+ registerBacklogTools(s);
280
286
  registerPrompts(s);
287
+ }
288
+ function createMcpServer() {
289
+ const s = withToolTracking(new McpServer({ name: 'planu', version: PLANU_VERSION }, { instructions: SERVER_INSTRUCTIONS }));
290
+ registerAllTools(s);
281
291
  return s;
282
292
  }
283
293
  // Primary server instance (used for stdio and group manager init)
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { IdeaItem } from '../types/index.js';
2
+ /**
3
+ * Save a new idea (appends to existing list).
4
+ */
5
+ export declare function saveIdea(projectPath: string, idea: IdeaItem): Promise<void>;
6
+ /**
7
+ * Load all ideas for a project.
8
+ */
9
+ export declare function loadIdeas(projectPath: string): Promise<IdeaItem[]>;
10
+ /**
11
+ * Update a single idea by ID, applying partial patch.
12
+ * Returns the updated idea, or null if not found.
13
+ */
14
+ export declare function updateIdea(projectPath: string, id: string, patch: Partial<IdeaItem>): Promise<IdeaItem | null>;
15
+ //# sourceMappingURL=ideas-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ideas-store.d.ts","sourceRoot":"","sources":["../../src/storage/ideas-store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAQlD;;GAEG;AACH,wBAAsB,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAKjF;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAGxE;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,GACvB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAQ1B"}