promptkaizen-agent 0.2.0 → 0.3.1

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 (176) hide show
  1. package/README.md +5 -1
  2. package/dist/backfill/run.d.ts +15 -0
  3. package/dist/backfill/run.d.ts.map +1 -0
  4. package/dist/backfill/run.js +33 -0
  5. package/dist/backfill/run.js.map +1 -0
  6. package/dist/backfill/scanner.d.ts +82 -0
  7. package/dist/backfill/scanner.d.ts.map +1 -0
  8. package/dist/backfill/scanner.js +271 -0
  9. package/dist/backfill/scanner.js.map +1 -0
  10. package/dist/cli/detect.d.ts +2 -0
  11. package/dist/cli/detect.d.ts.map +1 -0
  12. package/dist/cli/detect.js +40 -0
  13. package/dist/cli/detect.js.map +1 -0
  14. package/dist/cli/disable.d.ts +2 -0
  15. package/dist/cli/disable.d.ts.map +1 -0
  16. package/dist/cli/disable.js +44 -0
  17. package/dist/cli/disable.js.map +1 -0
  18. package/dist/cli/enable.d.ts +2 -0
  19. package/dist/cli/enable.d.ts.map +1 -0
  20. package/dist/cli/enable.js +105 -0
  21. package/dist/cli/enable.js.map +1 -0
  22. package/dist/cli/hook.d.ts +2 -0
  23. package/dist/cli/hook.d.ts.map +1 -0
  24. package/dist/cli/hook.js +406 -0
  25. package/dist/cli/hook.js.map +1 -0
  26. package/dist/cli/init.d.ts.map +1 -1
  27. package/dist/cli/init.js +70 -8
  28. package/dist/cli/init.js.map +1 -1
  29. package/dist/cli/install-hooks.d.ts +5 -0
  30. package/dist/cli/install-hooks.d.ts.map +1 -0
  31. package/dist/cli/install-hooks.js +132 -0
  32. package/dist/cli/install-hooks.js.map +1 -0
  33. package/dist/cli/install-task.d.ts +28 -0
  34. package/dist/cli/install-task.d.ts.map +1 -0
  35. package/dist/cli/install-task.js +119 -0
  36. package/dist/cli/install-task.js.map +1 -0
  37. package/dist/cli/mcp.d.ts +2 -0
  38. package/dist/cli/mcp.d.ts.map +1 -0
  39. package/dist/cli/mcp.js +148 -0
  40. package/dist/cli/mcp.js.map +1 -0
  41. package/dist/cli/metrics.d.ts +2 -0
  42. package/dist/cli/metrics.d.ts.map +1 -0
  43. package/dist/cli/metrics.js +103 -0
  44. package/dist/cli/metrics.js.map +1 -0
  45. package/dist/cli/report.d.ts +2 -0
  46. package/dist/cli/report.d.ts.map +1 -0
  47. package/dist/cli/report.js +211 -0
  48. package/dist/cli/report.js.map +1 -0
  49. package/dist/cli/scan.d.ts +2 -0
  50. package/dist/cli/scan.d.ts.map +1 -0
  51. package/dist/cli/scan.js +171 -0
  52. package/dist/cli/scan.js.map +1 -0
  53. package/dist/cli/start.d.ts.map +1 -1
  54. package/dist/cli/start.js +70 -17
  55. package/dist/cli/start.js.map +1 -1
  56. package/dist/cli/status.d.ts.map +1 -1
  57. package/dist/cli/status.js +82 -18
  58. package/dist/cli/status.js.map +1 -1
  59. package/dist/cli/uninstall-task.d.ts +8 -0
  60. package/dist/cli/uninstall-task.d.ts.map +1 -0
  61. package/dist/cli/uninstall-task.js +44 -0
  62. package/dist/cli/uninstall-task.js.map +1 -0
  63. package/dist/config.d.ts +172 -6
  64. package/dist/config.d.ts.map +1 -1
  65. package/dist/config.js +114 -2
  66. package/dist/config.js.map +1 -1
  67. package/dist/console-safe.d.ts +21 -0
  68. package/dist/console-safe.d.ts.map +1 -0
  69. package/dist/console-safe.js +71 -0
  70. package/dist/console-safe.js.map +1 -0
  71. package/dist/detection-secret.d.ts.map +1 -1
  72. package/dist/detection-secret.js +12 -0
  73. package/dist/detection-secret.js.map +1 -1
  74. package/dist/env-detect.d.ts +44 -0
  75. package/dist/env-detect.d.ts.map +1 -0
  76. package/dist/env-detect.js +151 -0
  77. package/dist/env-detect.js.map +1 -0
  78. package/dist/exec/executor.d.ts +42 -0
  79. package/dist/exec/executor.d.ts.map +1 -0
  80. package/dist/exec/executor.js +135 -0
  81. package/dist/exec/executor.js.map +1 -0
  82. package/dist/exec/pk-execute.d.ts +30 -0
  83. package/dist/exec/pk-execute.d.ts.map +1 -0
  84. package/dist/exec/pk-execute.js +174 -0
  85. package/dist/exec/pk-execute.js.map +1 -0
  86. package/dist/exec/policy-fetcher.d.ts +9 -0
  87. package/dist/exec/policy-fetcher.d.ts.map +1 -0
  88. package/dist/exec/policy-fetcher.js +46 -0
  89. package/dist/exec/policy-fetcher.js.map +1 -0
  90. package/dist/exec/policy.d.ts +32 -0
  91. package/dist/exec/policy.d.ts.map +1 -0
  92. package/dist/exec/policy.js +88 -0
  93. package/dist/exec/policy.js.map +1 -0
  94. package/dist/hooks/block-store.d.ts +14 -0
  95. package/dist/hooks/block-store.d.ts.map +1 -0
  96. package/dist/hooks/block-store.js +26 -0
  97. package/dist/hooks/block-store.js.map +1 -0
  98. package/dist/hooks/claude-hook.d.ts +55 -0
  99. package/dist/hooks/claude-hook.d.ts.map +1 -0
  100. package/dist/hooks/claude-hook.js +122 -0
  101. package/dist/hooks/claude-hook.js.map +1 -0
  102. package/dist/hooks/continuity.d.ts +48 -0
  103. package/dist/hooks/continuity.d.ts.map +1 -0
  104. package/dist/hooks/continuity.js +92 -0
  105. package/dist/hooks/continuity.js.map +1 -0
  106. package/dist/hooks/observation.d.ts +27 -0
  107. package/dist/hooks/observation.d.ts.map +1 -0
  108. package/dist/hooks/observation.js +0 -0
  109. package/dist/hooks/observation.js.map +1 -0
  110. package/dist/hooks/platforms.d.ts +24 -0
  111. package/dist/hooks/platforms.d.ts.map +1 -0
  112. package/dist/hooks/platforms.js +57 -0
  113. package/dist/hooks/platforms.js.map +1 -0
  114. package/dist/hooks/read-cache.d.ts +71 -0
  115. package/dist/hooks/read-cache.d.ts.map +1 -0
  116. package/dist/hooks/read-cache.js +166 -0
  117. package/dist/hooks/read-cache.js.map +1 -0
  118. package/dist/hooks/reduction.d.ts +78 -0
  119. package/dist/hooks/reduction.d.ts.map +1 -0
  120. package/dist/hooks/reduction.js +111 -0
  121. package/dist/hooks/reduction.js.map +1 -0
  122. package/dist/hooks/settings-merge.d.ts +32 -0
  123. package/dist/hooks/settings-merge.d.ts.map +1 -0
  124. package/dist/hooks/settings-merge.js +74 -0
  125. package/dist/hooks/settings-merge.js.map +1 -0
  126. package/dist/hooks/snapshot.d.ts +37 -0
  127. package/dist/hooks/snapshot.d.ts.map +1 -0
  128. package/dist/hooks/snapshot.js +180 -0
  129. package/dist/hooks/snapshot.js.map +1 -0
  130. package/dist/index.js +51 -0
  131. package/dist/index.js.map +1 -1
  132. package/dist/mcp/server.d.ts +118 -0
  133. package/dist/mcp/server.d.ts.map +1 -0
  134. package/dist/mcp/server.js +240 -0
  135. package/dist/mcp/server.js.map +1 -0
  136. package/dist/onboarding-report.d.ts +66 -0
  137. package/dist/onboarding-report.d.ts.map +1 -0
  138. package/dist/onboarding-report.js +152 -0
  139. package/dist/onboarding-report.js.map +1 -0
  140. package/dist/onboarding.d.ts +55 -0
  141. package/dist/onboarding.d.ts.map +1 -0
  142. package/dist/onboarding.js +98 -0
  143. package/dist/onboarding.js.map +1 -0
  144. package/dist/pii-masker.d.ts +7 -0
  145. package/dist/pii-masker.d.ts.map +1 -1
  146. package/dist/pii-masker.js +27 -51
  147. package/dist/pii-masker.js.map +1 -1
  148. package/dist/privacy.d.ts +13 -0
  149. package/dist/privacy.d.ts.map +1 -0
  150. package/dist/privacy.js +67 -0
  151. package/dist/privacy.js.map +1 -0
  152. package/dist/residency.d.ts +21 -0
  153. package/dist/residency.d.ts.map +1 -0
  154. package/dist/residency.js +68 -0
  155. package/dist/residency.js.map +1 -0
  156. package/dist/secret-detector.d.ts +19 -0
  157. package/dist/secret-detector.d.ts.map +1 -1
  158. package/dist/secret-detector.js +116 -0
  159. package/dist/secret-detector.js.map +1 -1
  160. package/dist/store/local-store.d.ts +167 -0
  161. package/dist/store/local-store.d.ts.map +1 -0
  162. package/dist/store/local-store.js +538 -0
  163. package/dist/store/local-store.js.map +1 -0
  164. package/dist/store/schema.d.ts +38 -0
  165. package/dist/store/schema.d.ts.map +1 -0
  166. package/dist/store/schema.js +189 -0
  167. package/dist/store/schema.js.map +1 -0
  168. package/dist/types.d.ts +13 -2
  169. package/dist/types.d.ts.map +1 -1
  170. package/dist/version.d.ts +1 -1
  171. package/dist/version.js +1 -1
  172. package/dist/watcher.d.ts +6 -0
  173. package/dist/watcher.d.ts.map +1 -1
  174. package/dist/watcher.js +13 -2
  175. package/dist/watcher.js.map +1 -1
  176. package/package.json +4 -2
package/dist/config.d.ts CHANGED
@@ -1,9 +1,26 @@
1
1
  import { z } from 'zod';
2
2
  export declare const AgentConfigSchema: z.ZodObject<{
3
- apiEndpoint: z.ZodString;
4
- apiKey: z.ZodString;
3
+ apiEndpoint: z.ZodOptional<z.ZodString>;
4
+ apiKey: z.ZodOptional<z.ZodString>;
5
5
  watchPaths: z.ZodArray<z.ZodString, "many">;
6
6
  exclude: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
7
+ localStore: z.ZodDefault<z.ZodObject<{
8
+ enabled: z.ZodDefault<z.ZodBoolean>;
9
+ path: z.ZodOptional<z.ZodString>;
10
+ }, "strip", z.ZodTypeAny, {
11
+ enabled: boolean;
12
+ path?: string | undefined;
13
+ }, {
14
+ path?: string | undefined;
15
+ enabled?: boolean | undefined;
16
+ }>>;
17
+ privacy: z.ZodDefault<z.ZodObject<{
18
+ sendPromptBody: z.ZodDefault<z.ZodBoolean>;
19
+ }, "strip", z.ZodTypeAny, {
20
+ sendPromptBody: boolean;
21
+ }, {
22
+ sendPromptBody?: boolean | undefined;
23
+ }>>;
7
24
  batch: z.ZodDefault<z.ZodObject<{
8
25
  intervalMs: z.ZodDefault<z.ZodNumber>;
9
26
  maxEntries: z.ZodDefault<z.ZodNumber>;
@@ -98,11 +115,89 @@ export declare const AgentConfigSchema: z.ZodObject<{
98
115
  }, {
99
116
  level?: "debug" | "info" | "warn" | "error" | undefined;
100
117
  }>>;
118
+ reduction: z.ZodDefault<z.ZodObject<{
119
+ enabled: z.ZodDefault<z.ZodBoolean>;
120
+ readCache: z.ZodDefault<z.ZodBoolean>;
121
+ offload: z.ZodDefault<z.ZodBoolean>;
122
+ batch: z.ZodDefault<z.ZodBoolean>;
123
+ thresholdBytes: z.ZodDefault<z.ZodNumber>;
124
+ headChars: z.ZodDefault<z.ZodNumber>;
125
+ batchThreshold: z.ZodDefault<z.ZodNumber>;
126
+ ttlDays: z.ZodDefault<z.ZodNumber>;
127
+ maxRefs: z.ZodDefault<z.ZodNumber>;
128
+ }, "strip", z.ZodTypeAny, {
129
+ enabled: boolean;
130
+ batch: boolean;
131
+ readCache: boolean;
132
+ offload: boolean;
133
+ thresholdBytes: number;
134
+ headChars: number;
135
+ batchThreshold: number;
136
+ ttlDays: number;
137
+ maxRefs: number;
138
+ }, {
139
+ enabled?: boolean | undefined;
140
+ batch?: boolean | undefined;
141
+ readCache?: boolean | undefined;
142
+ offload?: boolean | undefined;
143
+ thresholdBytes?: number | undefined;
144
+ headChars?: number | undefined;
145
+ batchThreshold?: number | undefined;
146
+ ttlDays?: number | undefined;
147
+ maxRefs?: number | undefined;
148
+ }>>;
149
+ execute: z.ZodDefault<z.ZodObject<{
150
+ enabled: z.ZodDefault<z.ZodBoolean>;
151
+ timeoutMs: z.ZodDefault<z.ZodNumber>;
152
+ maxReturnBytes: z.ZodDefault<z.ZodNumber>;
153
+ }, "strip", z.ZodTypeAny, {
154
+ enabled: boolean;
155
+ timeoutMs: number;
156
+ maxReturnBytes: number;
157
+ }, {
158
+ enabled?: boolean | undefined;
159
+ timeoutMs?: number | undefined;
160
+ maxReturnBytes?: number | undefined;
161
+ }>>;
162
+ continuity: z.ZodDefault<z.ZodObject<{
163
+ enabled: z.ZodDefault<z.ZodBoolean>;
164
+ maxInjectChars: z.ZodDefault<z.ZodNumber>;
165
+ maxAgeDays: z.ZodDefault<z.ZodNumber>;
166
+ }, "strip", z.ZodTypeAny, {
167
+ enabled: boolean;
168
+ maxInjectChars: number;
169
+ maxAgeDays: number;
170
+ }, {
171
+ enabled?: boolean | undefined;
172
+ maxInjectChars?: number | undefined;
173
+ maxAgeDays?: number | undefined;
174
+ }>>;
175
+ backfill: z.ZodDefault<z.ZodObject<{
176
+ budgetMs: z.ZodDefault<z.ZodNumber>;
177
+ maxFiles: z.ZodDefault<z.ZodNumber>;
178
+ maxBytesPerFile: z.ZodDefault<z.ZodNumber>;
179
+ displayLimit: z.ZodDefault<z.ZodNumber>;
180
+ }, "strip", z.ZodTypeAny, {
181
+ budgetMs: number;
182
+ maxFiles: number;
183
+ maxBytesPerFile: number;
184
+ displayLimit: number;
185
+ }, {
186
+ budgetMs?: number | undefined;
187
+ maxFiles?: number | undefined;
188
+ maxBytesPerFile?: number | undefined;
189
+ displayLimit?: number | undefined;
190
+ }>>;
101
191
  }, "strip", z.ZodTypeAny, {
102
- apiEndpoint: string;
103
- apiKey: string;
104
192
  watchPaths: string[];
105
193
  exclude: string[];
194
+ localStore: {
195
+ enabled: boolean;
196
+ path?: string | undefined;
197
+ };
198
+ privacy: {
199
+ sendPromptBody: boolean;
200
+ };
106
201
  batch: {
107
202
  intervalMs: number;
108
203
  maxEntries: number;
@@ -133,11 +228,47 @@ export declare const AgentConfigSchema: z.ZodObject<{
133
228
  telemetry: {
134
229
  level: "debug" | "info" | "warn" | "error";
135
230
  };
231
+ reduction: {
232
+ enabled: boolean;
233
+ batch: boolean;
234
+ readCache: boolean;
235
+ offload: boolean;
236
+ thresholdBytes: number;
237
+ headChars: number;
238
+ batchThreshold: number;
239
+ ttlDays: number;
240
+ maxRefs: number;
241
+ };
242
+ execute: {
243
+ enabled: boolean;
244
+ timeoutMs: number;
245
+ maxReturnBytes: number;
246
+ };
247
+ continuity: {
248
+ enabled: boolean;
249
+ maxInjectChars: number;
250
+ maxAgeDays: number;
251
+ };
252
+ backfill: {
253
+ budgetMs: number;
254
+ maxFiles: number;
255
+ maxBytesPerFile: number;
256
+ displayLimit: number;
257
+ };
258
+ apiEndpoint?: string | undefined;
259
+ apiKey?: string | undefined;
136
260
  }, {
137
- apiEndpoint: string;
138
- apiKey: string;
139
261
  watchPaths: string[];
262
+ apiEndpoint?: string | undefined;
263
+ apiKey?: string | undefined;
140
264
  exclude?: string[] | undefined;
265
+ localStore?: {
266
+ path?: string | undefined;
267
+ enabled?: boolean | undefined;
268
+ } | undefined;
269
+ privacy?: {
270
+ sendPromptBody?: boolean | undefined;
271
+ } | undefined;
141
272
  batch?: {
142
273
  intervalMs?: number | undefined;
143
274
  maxEntries?: number | undefined;
@@ -168,8 +299,43 @@ export declare const AgentConfigSchema: z.ZodObject<{
168
299
  telemetry?: {
169
300
  level?: "debug" | "info" | "warn" | "error" | undefined;
170
301
  } | undefined;
302
+ reduction?: {
303
+ enabled?: boolean | undefined;
304
+ batch?: boolean | undefined;
305
+ readCache?: boolean | undefined;
306
+ offload?: boolean | undefined;
307
+ thresholdBytes?: number | undefined;
308
+ headChars?: number | undefined;
309
+ batchThreshold?: number | undefined;
310
+ ttlDays?: number | undefined;
311
+ maxRefs?: number | undefined;
312
+ } | undefined;
313
+ execute?: {
314
+ enabled?: boolean | undefined;
315
+ timeoutMs?: number | undefined;
316
+ maxReturnBytes?: number | undefined;
317
+ } | undefined;
318
+ continuity?: {
319
+ enabled?: boolean | undefined;
320
+ maxInjectChars?: number | undefined;
321
+ maxAgeDays?: number | undefined;
322
+ } | undefined;
323
+ backfill?: {
324
+ budgetMs?: number | undefined;
325
+ maxFiles?: number | undefined;
326
+ maxBytesPerFile?: number | undefined;
327
+ displayLimit?: number | undefined;
328
+ } | undefined;
171
329
  }>;
172
330
  export type AgentConfig = z.infer<typeof AgentConfigSchema>;
173
331
  export declare function expandHome(p: string): string;
174
332
  export declare function loadConfig(explicitPath?: string): Promise<AgentConfig>;
333
+ /**
334
+ * クラウド送信が可能か (apiEndpoint と apiKey が両方そろっているか)。
335
+ * false の場合は「完全ローカル動作」= ローカル保存のみで送信ゼロ。
336
+ */
337
+ export declare function hasCloudToken(config: AgentConfig): config is AgentConfig & {
338
+ apiEndpoint: string;
339
+ apiKey: string;
340
+ };
175
341
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiE5B,CAAA;AAEF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAI3D,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAG5C;AAED,wBAAsB,UAAU,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAwB5E"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsK5B,CAAA;AAEF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAI3D,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAG5C;AAED,wBAAsB,UAAU,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA2B5E;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,IAAI,WAAW,GAAG;IAC1E,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;CACf,CAEA"}
package/dist/config.js CHANGED
@@ -6,15 +6,34 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.AgentConfigSchema = void 0;
7
7
  exports.expandHome = expandHome;
8
8
  exports.loadConfig = loadConfig;
9
+ exports.hasCloudToken = hasCloudToken;
9
10
  const promises_1 = __importDefault(require("fs/promises"));
10
11
  const os_1 = __importDefault(require("os"));
11
12
  const path_1 = __importDefault(require("path"));
12
13
  const zod_1 = require("zod");
13
14
  exports.AgentConfigSchema = zod_1.z.object({
14
- apiEndpoint: zod_1.z.string().url(),
15
- apiKey: zod_1.z.string().min(1),
15
+ // apiEndpoint / apiKey は任意 (Issue #68)。両方そろっている時のみクラウド送信する。
16
+ // 未設定なら「完全ローカル動作」= ローカル SQLite への保存のみで送信ゼロ。
17
+ apiEndpoint: zod_1.z.string().url().optional(),
18
+ apiKey: zod_1.z.string().min(1).optional(),
16
19
  watchPaths: zod_1.z.array(zod_1.z.string()).min(1),
17
20
  exclude: zod_1.z.array(zod_1.z.string()).default([]),
21
+ // ローカル SQLite ストア (Issue #68 / Epic #66 P2)。受信→正規化→マスク→ここに保存。
22
+ localStore: zod_1.z
23
+ .object({
24
+ enabled: zod_1.z.boolean().default(true),
25
+ // 既定は ~/.promptkaizen/agent.db。明示パスも可 (~ 展開対応)。
26
+ path: zod_1.z.string().optional(),
27
+ })
28
+ .default({ enabled: true }),
29
+ // 送信プライバシー (Issue #68)。プロンプト本文は二段制御:
30
+ // (1) 常にマスク済み (2) 組織が opt-in した時のみ本文を送信。
31
+ // off の間はメタデータのみ送信し、本文はローカル DB だけに保持する。
32
+ privacy: zod_1.z
33
+ .object({
34
+ sendPromptBody: zod_1.z.boolean().default(false),
35
+ })
36
+ .default({ sendPromptBody: false }),
18
37
  batch: zod_1.z
19
38
  .object({
20
39
  intervalMs: zod_1.z.number().int().positive().default(5000),
@@ -73,6 +92,89 @@ exports.AgentConfigSchema = zod_1.z.object({
73
92
  level: zod_1.z.enum(['debug', 'info', 'warn', 'error']).default('info'),
74
93
  })
75
94
  .default({ level: 'info' }),
95
+ // ツール出力の退避・参照化 (Issue #93 / Epic #91 R1)。
96
+ // PostToolUse で閾値超過のツール出力をローカル SQLite へ退避し、
97
+ // 要約 + 参照ID (pk_fetch で取得可) に差し替えてコンテキスト消費を削減する。
98
+ // ⚠️ Claude Code 限定: Codex CLI は updatedToolOutput (出力書換) 非対応のため、
99
+ // enabled でも codex プラットフォームでは一切介入しない。
100
+ // 退避には localStore.enabled も必要 (退避先がないと参照を返せない)。
101
+ reduction: zod_1.z
102
+ .object({
103
+ // マスタースイッチ。false なら Read 特化機能・退避ともに一切介入しない。
104
+ enabled: zod_1.z.boolean().default(false),
105
+ // ① Read 再読込キャッシュ (#110): 同一 file_path の再 Read をヒントに差し替える。
106
+ readCache: zod_1.z.boolean().default(true),
107
+ // ② ツール出力退避 (#93/#110): 閾値超過の出力をプレビュー+ref_id に差し替える。
108
+ offload: zod_1.z.boolean().default(true),
109
+ // ③ 連続 Read の一括読み誘導 (#110): 既定オフ (ガイダンス注入は控えめに)。
110
+ batch: zod_1.z.boolean().default(false),
111
+ // このバイト数を超えるツール出力を退避する (UTF-8 バイト長)。
112
+ thresholdBytes: zod_1.z.number().int().positive().default(10_240),
113
+ // 差し替え後に残す先頭プレビューの文字数。
114
+ headChars: zod_1.z.number().int().positive().default(800),
115
+ // ③ 連続 Read 誘導を出すまでの連続回数。
116
+ batchThreshold: zod_1.z.number().int().positive().default(5),
117
+ // ローカル衛生 (#110): 退避レコード/キャッシュの TTL (日) と件数上限。
118
+ ttlDays: zod_1.z.number().int().positive().default(30),
119
+ maxRefs: zod_1.z.number().int().positive().default(5_000),
120
+ })
121
+ .default({
122
+ enabled: false,
123
+ readCache: true,
124
+ offload: true,
125
+ batch: false,
126
+ thresholdBytes: 10_240,
127
+ headChars: 800,
128
+ batchThreshold: 5,
129
+ ttlDays: 30,
130
+ maxRefs: 5_000,
131
+ }),
132
+ // サンドボックス実行ツール pk_execute (Issue #94 / Epic #91 R2)。
133
+ // MCP 経由でのみ呼ばれる (Claude Code / Codex 両対応)。enabled=false で
134
+ // tools/list から消え、呼び出しも拒否される。
135
+ execute: zod_1.z
136
+ .object({
137
+ enabled: zod_1.z.boolean().default(true),
138
+ // 子プロセスのタイムアウト ms (SIGKILL)。
139
+ timeoutMs: zod_1.z.number().int().positive().max(300_000).default(30_000),
140
+ // コンテキストへ返す stdout の上限バイト。超過分は R1 退避 (#93) へ回す。
141
+ maxReturnBytes: zod_1.z.number().int().positive().default(20_000),
142
+ })
143
+ .default({ enabled: true, timeoutMs: 30_000, maxReturnBytes: 20_000 }),
144
+ // セッション継続 (Issue #95 / Epic #91 R3)。
145
+ // PreCompact (Claude Code) / Stop (Codex) で作業状態を保存し、
146
+ // SessionStart (source=compact/resume) で要約を注入する。
147
+ // ⚠️ Codex は PreCompact 非対応のため Stop (ターン終了) 時保存のみ (機能差)。
148
+ continuity: zod_1.z
149
+ .object({
150
+ enabled: zod_1.z.boolean().default(false),
151
+ // 注入する要約の上限文字数 (復元自体がコンテキストを食い潰さないように)。
152
+ maxInjectChars: zod_1.z.number().int().positive().max(8000).default(1500),
153
+ // これより古いスナップショットは注入しない (日)。
154
+ maxAgeDays: zod_1.z.number().int().positive().default(14),
155
+ })
156
+ .default({ enabled: false, maxInjectChars: 1500, maxAgeDays: 14 }),
157
+ // 履歴バックフィルスキャナ (Issue #103 / Epic #102 オンボーディング)。
158
+ // 初回起動時に既存の過去ログ (~/.claude/projects, ~/.codex/sessions) を一括スキャンし、
159
+ // ライブ監視を待たずにレポートを出す。TTV (install→レポート 120秒) を守るため、
160
+ // 直近優先のスキャン順 + 件数上限 + タイムボックスで初期表示までの時間を頭打ちにする。
161
+ backfill: zod_1.z
162
+ .object({
163
+ // スキャンの総時間予算 (ms)。超過時はそこまでの結果でレポートを出す (timedOut フラグ)。
164
+ budgetMs: zod_1.z.number().int().positive().default(60_000),
165
+ // スキャン対象ファイルの上限 (直近 mtime 順に選ぶ)。超過分は capped としてスキップ。
166
+ maxFiles: zod_1.z.number().int().positive().default(2_000),
167
+ // この UTF-8 バイト数を超えるファイルはスキップ (肥大化した rollout 対策)。
168
+ maxBytesPerFile: zod_1.z.number().int().positive().default(64 * 1024 * 1024),
169
+ // レポートに列挙する検知ヒットの最大件数 (残りは "... 他 N 件" に集約)。
170
+ displayLimit: zod_1.z.number().int().positive().default(50),
171
+ })
172
+ .default({
173
+ budgetMs: 60_000,
174
+ maxFiles: 2_000,
175
+ maxBytesPerFile: 64 * 1024 * 1024,
176
+ displayLimit: 50,
177
+ }),
76
178
  });
77
179
  const DEFAULT_CONFIG_PATH = path_1.default.join(os_1.default.homedir(), '.promptkaizen', 'agent.config.json');
78
180
  function expandHome(p) {
@@ -103,6 +205,16 @@ async function loadConfig(explicitPath) {
103
205
  }
104
206
  // ~ を絶対パスに展開
105
207
  parsed.data.watchPaths = parsed.data.watchPaths.map(expandHome);
208
+ if (parsed.data.localStore.path) {
209
+ parsed.data.localStore.path = expandHome(parsed.data.localStore.path);
210
+ }
106
211
  return parsed.data;
107
212
  }
213
+ /**
214
+ * クラウド送信が可能か (apiEndpoint と apiKey が両方そろっているか)。
215
+ * false の場合は「完全ローカル動作」= ローカル保存のみで送信ゼロ。
216
+ */
217
+ function hasCloudToken(config) {
218
+ return Boolean(config.apiEndpoint && config.apiKey);
219
+ }
108
220
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Windows のレガシーコンソール (conhost / Windows PowerShell のラスタ・Consolas フォント) は
3
+ * 絵文字 (✅ ❌ ⚠️ 🔴 …) をグリフを持たず □ (tofu) として表示してしまう。
4
+ * セットアップは PowerShell を右クリック→管理者として実行する前提なので、ここで CLI 出力の
5
+ * 絵文字を ASCII 記号へ変換し、文字化けを防ぐ。
6
+ *
7
+ * Windows Terminal (WT_SESSION) や VS Code 統合ターミナルなど絵文字を描画できる環境では
8
+ * そのまま絵文字を残す。PROMPTKAIZEN_ASCII=1/0 で強制切り替えも可能。
9
+ *
10
+ * 注意: console 出力 (表示) のみを変換する。クラウド送信やファイル書き込みのデータには触れない。
11
+ */
12
+ /** ASCII フォールバックを使うべきか。Windows のレガシーコンソールのみ true。 */
13
+ export declare function shouldUseAsciiFallback(): boolean;
14
+ /** 文字列内の絵文字を ASCII 記号へ置換する。 */
15
+ export declare function toAsciiSafe(s: string): string;
16
+ /**
17
+ * 必要な環境でのみ console.log / console.error / console.warn をラップし、
18
+ * 文字列引数を ASCII セーフに変換する。CLI エントリポイントの先頭で一度だけ呼ぶ。
19
+ */
20
+ export declare function installConsoleSafe(): void;
21
+ //# sourceMappingURL=console-safe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console-safe.d.ts","sourceRoot":"","sources":["../src/console-safe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAkBH,qDAAqD;AACrD,wBAAgB,sBAAsB,IAAI,OAAO,CAShD;AAED,+BAA+B;AAC/B,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAI7C;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAUzC"}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ /**
3
+ * Windows のレガシーコンソール (conhost / Windows PowerShell のラスタ・Consolas フォント) は
4
+ * 絵文字 (✅ ❌ ⚠️ 🔴 …) をグリフを持たず □ (tofu) として表示してしまう。
5
+ * セットアップは PowerShell を右クリック→管理者として実行する前提なので、ここで CLI 出力の
6
+ * 絵文字を ASCII 記号へ変換し、文字化けを防ぐ。
7
+ *
8
+ * Windows Terminal (WT_SESSION) や VS Code 統合ターミナルなど絵文字を描画できる環境では
9
+ * そのまま絵文字を残す。PROMPTKAIZEN_ASCII=1/0 で強制切り替えも可能。
10
+ *
11
+ * 注意: console 出力 (表示) のみを変換する。クラウド送信やファイル書き込みのデータには触れない。
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.shouldUseAsciiFallback = shouldUseAsciiFallback;
15
+ exports.toAsciiSafe = toAsciiSafe;
16
+ exports.installConsoleSafe = installConsoleSafe;
17
+ /** 絵文字 → ASCII 記号。status / report / enable など全コマンドの表示に効く。 */
18
+ const ASCII_MAP = [
19
+ [/✅/g, '[OK]'],
20
+ [/✓/g, '[OK]'],
21
+ [/❌/g, '[NG]'],
22
+ [/✗/g, '[NG]'],
23
+ [/⚠️/g, '[!]'],
24
+ [/⚠/g, '[!]'],
25
+ // 信号機絵文字は「重要度」と「スコア健全性」の両義で使われるため、どちらでも自然に
26
+ // 読める記号にする (🔴=要対応, 🟡=注意, 🟢=良好)
27
+ [/🔴/g, '[!!]'],
28
+ [/🟡/g, '[!]'],
29
+ [/🟢/g, '[OK]'],
30
+ [/️/g, ''], // 単独で残った異体字セレクタを除去
31
+ ];
32
+ /** ASCII フォールバックを使うべきか。Windows のレガシーコンソールのみ true。 */
33
+ function shouldUseAsciiFallback() {
34
+ const force = process.env.PROMPTKAIZEN_ASCII;
35
+ if (force === '1')
36
+ return true;
37
+ if (force === '0')
38
+ return false;
39
+ if (process.platform !== 'win32')
40
+ return false;
41
+ // 絵文字を描画できる新しめのターミナルは除外
42
+ if (process.env.WT_SESSION)
43
+ return false; // Windows Terminal
44
+ if (process.env.TERM_PROGRAM === 'vscode')
45
+ return false; // VS Code 統合ターミナル
46
+ return true; // 旧来の conhost / Windows PowerShell
47
+ }
48
+ /** 文字列内の絵文字を ASCII 記号へ置換する。 */
49
+ function toAsciiSafe(s) {
50
+ let out = s;
51
+ for (const [re, rep] of ASCII_MAP)
52
+ out = out.replace(re, rep);
53
+ return out;
54
+ }
55
+ /**
56
+ * 必要な環境でのみ console.log / console.error / console.warn をラップし、
57
+ * 文字列引数を ASCII セーフに変換する。CLI エントリポイントの先頭で一度だけ呼ぶ。
58
+ */
59
+ function installConsoleSafe() {
60
+ if (!shouldUseAsciiFallback())
61
+ return;
62
+ const wrap = (orig) => {
63
+ return (...args) => {
64
+ orig(...args.map((a) => (typeof a === 'string' ? toAsciiSafe(a) : a)));
65
+ };
66
+ };
67
+ console.log = wrap(console.log.bind(console));
68
+ console.error = wrap(console.error.bind(console));
69
+ console.warn = wrap(console.warn.bind(console));
70
+ }
71
+ //# sourceMappingURL=console-safe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console-safe.js","sourceRoot":"","sources":["../src/console-safe.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;AAmBH,wDASC;AAGD,kCAIC;AAMD,gDAUC;AAjDD,6DAA6D;AAC7D,MAAM,SAAS,GAA4B;IACzC,CAAC,IAAI,EAAE,MAAM,CAAC;IACd,CAAC,IAAI,EAAE,MAAM,CAAC;IACd,CAAC,IAAI,EAAE,MAAM,CAAC;IACd,CAAC,IAAI,EAAE,MAAM,CAAC;IACd,CAAC,KAAK,EAAE,KAAK,CAAC;IACd,CAAC,IAAI,EAAE,KAAK,CAAC;IACb,2CAA2C;IAC3C,kCAAkC;IAClC,CAAC,KAAK,EAAE,MAAM,CAAC;IACf,CAAC,KAAK,EAAE,KAAK,CAAC;IACd,CAAC,KAAK,EAAE,MAAM,CAAC;IACf,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,mBAAmB;CAChC,CAAA;AAED,qDAAqD;AACrD,SAAgB,sBAAsB;IACpC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAA;IAC5C,IAAI,KAAK,KAAK,GAAG;QAAE,OAAO,IAAI,CAAA;IAC9B,IAAI,KAAK,KAAK,GAAG;QAAE,OAAO,KAAK,CAAA;IAC/B,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,KAAK,CAAA;IAC9C,wBAAwB;IACxB,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU;QAAE,OAAO,KAAK,CAAA,CAAC,mBAAmB;IAC5D,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA,CAAC,kBAAkB;IAC1E,OAAO,IAAI,CAAA,CAAC,mCAAmC;AACjD,CAAC;AAED,+BAA+B;AAC/B,SAAgB,WAAW,CAAC,CAAS;IACnC,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,KAAK,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,SAAS;QAAE,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;IAC7D,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;;GAGG;AACH,SAAgB,kBAAkB;IAChC,IAAI,CAAC,sBAAsB,EAAE;QAAE,OAAM;IACrC,MAAM,IAAI,GAAG,CAAC,IAAkC,EAAE,EAAE;QAClD,OAAO,CAAC,GAAG,IAAe,EAAQ,EAAE;YAClC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACxE,CAAC,CAAA;IACH,CAAC,CAAA;IACD,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;IAC7C,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;IACjD,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;AACjD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"detection-secret.d.ts","sourceRoot":"","sources":["../src/detection-secret.ts"],"names":[],"mappings":"AAWA;;;;;GAKG;AACH,wBAAsB,2BAA2B,CAC/C,YAAY,CAAC,EAAE,MAAM,EACrB,UAAU,GAAE,MAA4B,GACvC,OAAO,CAAC,MAAM,CAAC,CAYjB"}
1
+ {"version":3,"file":"detection-secret.d.ts","sourceRoot":"","sources":["../src/detection-secret.ts"],"names":[],"mappings":"AAYA;;;;;GAKG;AACH,wBAAsB,2BAA2B,CAC/C,YAAY,CAAC,EAAE,MAAM,EACrB,UAAU,GAAE,MAA4B,GACvC,OAAO,CAAC,MAAM,CAAC,CA0BjB"}
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.loadOrCreateDetectionSecret = loadOrCreateDetectionSecret;
7
+ const child_process_1 = require("child_process");
7
8
  const crypto_1 = require("crypto");
8
9
  const promises_1 = __importDefault(require("fs/promises"));
9
10
  const os_1 = __importDefault(require("os"));
@@ -32,6 +33,17 @@ async function loadOrCreateDetectionSecret(configSecret, secretPath = DEFAULT_SE
32
33
  const secret = (0, crypto_1.randomBytes)(32).toString('hex');
33
34
  await promises_1.default.mkdir(path_1.default.dirname(secretPath), { recursive: true });
34
35
  await promises_1.default.writeFile(secretPath, secret + '\n', { mode: 0o600 });
36
+ // Windows は mode 600 が無視されるため、ACL で本人のみに制限する (Issue #61 方針)。
37
+ // 継承 ACE を外し (inheritance:r)、現在ユーザーへのフルコントロールだけ付与する。
38
+ // 失敗しても鍵自体は機能する (相関がローカルに限定されるだけ) ので best-effort。
39
+ if (process.platform === 'win32') {
40
+ try {
41
+ (0, child_process_1.execFileSync)('icacls', [secretPath, '/inheritance:r', '/grant:r', `${os_1.default.userInfo().username}:F`], { stdio: 'ignore' });
42
+ }
43
+ catch {
44
+ // best-effort
45
+ }
46
+ }
35
47
  return secret;
36
48
  }
37
49
  //# sourceMappingURL=detection-secret.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"detection-secret.js","sourceRoot":"","sources":["../src/detection-secret.ts"],"names":[],"mappings":";;;;;AAiBA,kEAeC;AAhCD,mCAAoC;AACpC,2DAA4B;AAC5B,4CAAmB;AACnB,gDAAuB;AAEvB,kEAAkE;AAClE,2CAA2C;AAC3C,yCAAyC;AAEzC,MAAM,mBAAmB,GAAG,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,eAAe,EAAE,kBAAkB,CAAC,CAAA;AAExF;;;;;GAKG;AACI,KAAK,UAAU,2BAA2B,CAC/C,YAAqB,EACrB,aAAqB,mBAAmB;IAExC,IAAI,YAAY;QAAE,OAAO,YAAY,CAAA;IACrC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,CAAC,MAAM,kBAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QAC/D,IAAI,QAAQ,CAAC,MAAM,IAAI,EAAE;YAAE,OAAO,QAAQ,CAAA;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,yBAAyB;IAC3B,CAAC;IACD,MAAM,MAAM,GAAG,IAAA,oBAAW,EAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC9C,MAAM,kBAAE,CAAC,KAAK,CAAC,cAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC7D,MAAM,kBAAE,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IAC9D,OAAO,MAAM,CAAA;AACf,CAAC"}
1
+ {"version":3,"file":"detection-secret.js","sourceRoot":"","sources":["../src/detection-secret.ts"],"names":[],"mappings":";;;;;AAkBA,kEA6BC;AA/CD,iDAA4C;AAC5C,mCAAoC;AACpC,2DAA4B;AAC5B,4CAAmB;AACnB,gDAAuB;AAEvB,kEAAkE;AAClE,2CAA2C;AAC3C,yCAAyC;AAEzC,MAAM,mBAAmB,GAAG,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,eAAe,EAAE,kBAAkB,CAAC,CAAA;AAExF;;;;;GAKG;AACI,KAAK,UAAU,2BAA2B,CAC/C,YAAqB,EACrB,aAAqB,mBAAmB;IAExC,IAAI,YAAY;QAAE,OAAO,YAAY,CAAA;IACrC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,CAAC,MAAM,kBAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QAC/D,IAAI,QAAQ,CAAC,MAAM,IAAI,EAAE;YAAE,OAAO,QAAQ,CAAA;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,yBAAyB;IAC3B,CAAC;IACD,MAAM,MAAM,GAAG,IAAA,oBAAW,EAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC9C,MAAM,kBAAE,CAAC,KAAK,CAAC,cAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC7D,MAAM,kBAAE,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IAC9D,6DAA6D;IAC7D,qDAAqD;IACrD,kDAAkD;IAClD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,IAAA,4BAAY,EACV,QAAQ,EACR,CAAC,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,GAAG,YAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,IAAI,CAAC,EACzE,EAAE,KAAK,EAAE,QAAQ,EAAE,CACpB,CAAA;QACH,CAAC;QAAC,MAAM,CAAC;YACP,cAAc;QAChB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -0,0 +1,44 @@
1
+ export type DetectedTool = 'claude_code' | 'codex';
2
+ export interface ToolDetection {
3
+ tool: DetectedTool;
4
+ label: string;
5
+ /** 検出に採用したディレクトリ (存在する候補のうちセッション数最大)。未検出なら null。 */
6
+ basePath: string | null;
7
+ present: boolean;
8
+ /** Claude: project ディレクトリ数。Codex は概念がないため 0。 */
9
+ projects: number;
10
+ /** *.jsonl セッションファイル数。 */
11
+ sessions: number;
12
+ /** watchPaths 用の glob (~ 圧縮済み)。未検出なら null。 */
13
+ watchGlob: string | null;
14
+ }
15
+ export interface EnvironmentDetection {
16
+ platform: NodeJS.Platform;
17
+ isWSL: boolean;
18
+ home: string;
19
+ tools: ToolDetection[];
20
+ /** 検出されたツールのみ。 */
21
+ detected: ToolDetection[];
22
+ anyDetected: boolean;
23
+ /** 検出ツールの watch glob 一覧 (config.watchPaths に使える)。 */
24
+ watchPaths: string[];
25
+ }
26
+ export interface DetectOptions {
27
+ homeDir?: string;
28
+ platform?: NodeJS.Platform;
29
+ isWSL?: boolean;
30
+ /** WSL 時に探索する Windows ユーザーディレクトリ (/mnt/c/Users/<u>)。テスト注入可。 */
31
+ windowsUserDirs?: string[];
32
+ /** ディレクトリ walk の深さ上限 (暴走防止)。 */
33
+ maxDepth?: number;
34
+ }
35
+ /** WSL 上で動いているか (/proc/version に microsoft/WSL を含むか)。 */
36
+ export declare function detectWSL(platform?: NodeJS.Platform): boolean;
37
+ /**
38
+ * 環境を検出する。各ツールについて候補ベース (ホーム + WSL の Windows ユーザー) を評価し、
39
+ * 「存在する候補のうちセッション数が最大のもの」を採用する。
40
+ */
41
+ export declare function detectEnvironment(opts?: DetectOptions): Promise<EnvironmentDetection>;
42
+ /** 検出結果を人間向けの要約行に整形する (例: `Claude Code : 12 projects / 348 sessions`)。 */
43
+ export declare function formatDetectionSummary(env: EnvironmentDetection): string[];
44
+ //# sourceMappingURL=env-detect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-detect.d.ts","sourceRoot":"","sources":["../src/env-detect.ts"],"names":[],"mappings":"AAoBA,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,OAAO,CAAA;AAElD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,YAAY,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,oDAAoD;IACpD,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,OAAO,EAAE,OAAO,CAAA;IAChB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAA;IAChB,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,8CAA8C;IAC9C,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAA;IACzB,KAAK,EAAE,OAAO,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,aAAa,EAAE,CAAA;IACtB,kBAAkB;IAClB,QAAQ,EAAE,aAAa,EAAE,CAAA;IACzB,WAAW,EAAE,OAAO,CAAA;IACpB,qDAAqD;IACrD,UAAU,EAAE,MAAM,EAAE,CAAA;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAA;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,+DAA+D;IAC/D,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAOD,yDAAyD;AACzD,wBAAgB,SAAS,CAAC,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAAG,OAAO,CAO/E;AAqED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAyC/F;AAED,0EAA0E;AAC1E,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,oBAAoB,GAAG,MAAM,EAAE,CAe1E"}