@dendelion/paper-camp 0.32.0 → 0.33.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 (63) hide show
  1. package/README.md +1 -1
  2. package/dist/chunks/{daemon-state.61FBbbsV.js → daemon-state.BeDnhzBY.js} +47 -43
  3. package/dist/chunks/daemon-state.BeDnhzBY.js.map +1 -0
  4. package/dist/chunks/phase-progress.cMGsSLa8.js +3003 -0
  5. package/dist/chunks/phase-progress.cMGsSLa8.js.map +1 -0
  6. package/dist/cli/index.js +5933 -21107
  7. package/dist/cli/index.js.map +1 -1
  8. package/dist/core/ci/ci-release.d.ts +9 -1
  9. package/dist/core/ci/ci-release.d.ts.map +1 -1
  10. package/dist/core/daemon-state/daemon-state.d.ts +1 -0
  11. package/dist/core/daemon-state/daemon-state.d.ts.map +1 -1
  12. package/dist/core/doctor/checks/tooling.d.ts +3 -0
  13. package/dist/core/doctor/checks/tooling.d.ts.map +1 -0
  14. package/dist/core/doctor/checks/tooling.test.d.ts +2 -0
  15. package/dist/core/doctor/checks/tooling.test.d.ts.map +1 -0
  16. package/dist/core/doctor/doctor.d.ts +1 -0
  17. package/dist/core/doctor/doctor.d.ts.map +1 -1
  18. package/dist/core/doctor/doctor.test.d.ts +2 -0
  19. package/dist/core/doctor/doctor.test.d.ts.map +1 -0
  20. package/dist/core/doctor/rules.d.ts +6 -1
  21. package/dist/core/doctor/rules.d.ts.map +1 -1
  22. package/dist/core/git-pr/pr-lookup.d.ts +11 -0
  23. package/dist/core/git-pr/pr-lookup.d.ts.map +1 -1
  24. package/dist/core/git-pr/pr.d.ts +1 -1
  25. package/dist/core/git-pr/pr.d.ts.map +1 -1
  26. package/dist/core/index.js +172 -157
  27. package/dist/core/notifications.d.ts +3 -1
  28. package/dist/core/notifications.d.ts.map +1 -1
  29. package/dist/core/parse/parser.d.ts.map +1 -1
  30. package/dist/core/parse/schemas.d.ts +60 -0
  31. package/dist/core/parse/schemas.d.ts.map +1 -1
  32. package/dist/core/push-send.d.ts +14 -0
  33. package/dist/core/push-send.d.ts.map +1 -0
  34. package/dist/core/push-send.test.d.ts +2 -0
  35. package/dist/core/push-send.test.d.ts.map +1 -0
  36. package/dist/core/push-store.d.ts +37 -0
  37. package/dist/core/push-store.d.ts.map +1 -0
  38. package/dist/core/push-store.test.d.ts +2 -0
  39. package/dist/core/push-store.test.d.ts.map +1 -0
  40. package/dist/core/run-rows.d.ts +3 -0
  41. package/dist/core/run-rows.d.ts.map +1 -1
  42. package/dist/core/scaffold/scaffold.d.ts +1 -0
  43. package/dist/core/scaffold/scaffold.d.ts.map +1 -1
  44. package/dist/core/scaffold/templates.d.ts +7 -1
  45. package/dist/core/scaffold/templates.d.ts.map +1 -1
  46. package/dist/core/scaffold/templates.test.d.ts +2 -0
  47. package/dist/core/scaffold/templates.test.d.ts.map +1 -0
  48. package/dist/core/stats.d.ts.map +1 -1
  49. package/dist/core/vapid-keys.d.ts +7 -0
  50. package/dist/core/vapid-keys.d.ts.map +1 -0
  51. package/dist/core/vapid-keys.test.d.ts +2 -0
  52. package/dist/core/vapid-keys.test.d.ts.map +1 -0
  53. package/dist/toolbar/toolbar.js +3652 -3666
  54. package/dist/toolbar/toolbar.js.map +1 -1
  55. package/dist/types/index.d.ts +20 -6
  56. package/dist/types/index.d.ts.map +1 -1
  57. package/dist/types/index.js +44 -22
  58. package/dist/types/index.js.map +1 -1
  59. package/dist/vite/index.js +1 -1
  60. package/package.json +7 -2
  61. package/dist/chunks/daemon-state.61FBbbsV.js.map +0 -1
  62. package/dist/chunks/phase-progress.Cos0IBFk.js +0 -7338
  63. package/dist/chunks/phase-progress.Cos0IBFk.js.map +0 -1
@@ -193,6 +193,48 @@ export declare const nightConfigSchema: z.ZodObject<{
193
193
  maxTurns: z.ZodOptional<z.ZodNumber>;
194
194
  maxCostUsd: z.ZodOptional<z.ZodNumber>;
195
195
  }, z.core.$strip>;
196
+ export declare const notificationsConfigSchema: z.ZodObject<{
197
+ kinds: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
198
+ "check-failed": "check-failed";
199
+ "pr-review-changes-requested": "pr-review-changes-requested";
200
+ "night-review-findings": "night-review-findings";
201
+ "service-stopped": "service-stopped";
202
+ "run-finished": "run-finished";
203
+ "run-failed": "run-failed";
204
+ "run-interrupted": "run-interrupted";
205
+ "question-parked": "question-parked";
206
+ "reply-posted": "reply-posted";
207
+ }>, z.ZodBoolean>>;
208
+ }, z.core.$strip>;
209
+ export declare const webPushSubscriptionSchema: z.ZodObject<{
210
+ endpoint: z.ZodString;
211
+ keys: z.ZodObject<{
212
+ p256dh: z.ZodString;
213
+ auth: z.ZodString;
214
+ }, z.core.$strip>;
215
+ }, z.core.$strip>;
216
+ export declare const pushSubscribeBodySchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
217
+ transport: z.ZodLiteral<"webpush">;
218
+ name: z.ZodString;
219
+ subscription: z.ZodObject<{
220
+ endpoint: z.ZodString;
221
+ keys: z.ZodObject<{
222
+ p256dh: z.ZodString;
223
+ auth: z.ZodString;
224
+ }, z.core.$strip>;
225
+ }, z.core.$strip>;
226
+ }, z.core.$strip>, z.ZodObject<{
227
+ transport: z.ZodLiteral<"expo">;
228
+ name: z.ZodString;
229
+ token: z.ZodString;
230
+ }, z.core.$strip>], "transport">;
231
+ export declare const pushUnsubscribeBodySchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
232
+ transport: z.ZodLiteral<"webpush">;
233
+ endpoint: z.ZodString;
234
+ }, z.core.$strip>, z.ZodObject<{
235
+ transport: z.ZodLiteral<"expo">;
236
+ token: z.ZodString;
237
+ }, z.core.$strip>], "transport">;
196
238
  export declare const paperCampConfigSchema: z.ZodObject<{
197
239
  version: z.ZodNumber;
198
240
  projectName: z.ZodString;
@@ -320,12 +362,29 @@ export declare const paperCampConfigSchema: z.ZodObject<{
320
362
  maxTurns: z.ZodOptional<z.ZodNumber>;
321
363
  maxCostUsd: z.ZodOptional<z.ZodNumber>;
322
364
  }, z.core.$strip>>;
365
+ notifications: z.ZodOptional<z.ZodObject<{
366
+ kinds: z.ZodOptional<z.ZodRecord<z.ZodEnum<{
367
+ "check-failed": "check-failed";
368
+ "pr-review-changes-requested": "pr-review-changes-requested";
369
+ "night-review-findings": "night-review-findings";
370
+ "service-stopped": "service-stopped";
371
+ "run-finished": "run-finished";
372
+ "run-failed": "run-failed";
373
+ "run-interrupted": "run-interrupted";
374
+ "question-parked": "question-parked";
375
+ "reply-posted": "reply-posted";
376
+ }>, z.ZodBoolean>>;
377
+ }, z.core.$strip>>;
323
378
  }, z.core.$strip>;
324
379
  export declare const storedNotificationSchema: z.ZodObject<{
325
380
  id: z.ZodString;
326
381
  kind: z.ZodEnum<{
327
382
  completed: "completed";
328
383
  reply: "reply";
384
+ "check-failed": "check-failed";
385
+ "pr-review-changes-requested": "pr-review-changes-requested";
386
+ "night-review-findings": "night-review-findings";
387
+ "service-stopped": "service-stopped";
329
388
  }>;
330
389
  entityId: z.ZodString;
331
390
  entityTitle: z.ZodString;
@@ -336,6 +395,7 @@ export declare const storedNotificationSchema: z.ZodObject<{
336
395
  done: "done";
337
396
  error: "error";
338
397
  }>>;
398
+ push: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
339
399
  }, z.core.$strip>;
340
400
  export type PlanFields = z.infer<typeof planFieldsSchema>;
341
401
  export type PlanFrontmatter = z.infer<typeof planFrontmatterSchema>;
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/core/parse/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,iBAAiB;;;;;;;kBAO7B,CAAC;AAEF,eAAO,MAAM,UAAU,aAAiE,CAAC;AAIzF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;iBAS3B,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAuBlB,CAAC;AAEjB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;iBAiB9B,CAAC;AAmEL;;;GAGG;AACH,eAAO,MAAM,0BAA0B,EAAE,WAAW,CAAC,MAAM,CAE1D,CAAC;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAsBhC,CAAC;AAEL,eAAO,MAAM,iBAAiB;;;;;iBAK5B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;iBAI1B,CAAC;AAEH,eAAO,MAAM,YAAY;;;;iBAIvB,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;iBAI3B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;iBAG5B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;iBAGjC,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;iBAW5B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmChC,CAAC;AAIH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;iBASnC,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/core/parse/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,iBAAiB;;;;;;;kBAO7B,CAAC;AAEF,eAAO,MAAM,UAAU,aAAiE,CAAC;AAIzF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;iBAS3B,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAuBlB,CAAC;AAEjB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;iBAiB9B,CAAC;AAmEL;;;GAGG;AACH,eAAO,MAAM,0BAA0B,EAAE,WAAW,CAAC,MAAM,CAE1D,CAAC;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAsBhC,CAAC;AAEL,eAAO,MAAM,iBAAiB;;;;;iBAK5B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;iBAI1B,CAAC;AAEH,eAAO,MAAM,YAAY;;;;iBAIvB,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;iBAI3B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;iBAG5B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;iBAGjC,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;iBAW5B,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;iBAEpC,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;iBAGpC,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;gCAOlC,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;gCAGpC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAoChC,CAAC;AAIH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;iBAiBnC,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { StoredNotificationKind } from '../types/index';
2
+ export interface PushPayload {
3
+ id: string;
4
+ kind: StoredNotificationKind;
5
+ entityId: string;
6
+ entityTitle: string;
7
+ text: string;
8
+ }
9
+ export interface SendPushOptions {
10
+ storePath?: string;
11
+ vapidKeysPath?: string;
12
+ }
13
+ export declare function sendPushForProject(root: string, payload: PushPayload, options?: SendPushOptions): Promise<void>;
14
+ //# sourceMappingURL=push-send.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push-send.d.ts","sourceRoot":"","sources":["../../src/core/push-send.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAe7D,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,sBAAsB,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AA0DD,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,WAAW,EACpB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAuCf"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=push-send.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push-send.test.d.ts","sourceRoot":"","sources":["../../src/core/push-send.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,37 @@
1
+ export interface WebPushSubscription {
2
+ endpoint: string;
3
+ keys: {
4
+ p256dh: string;
5
+ auth: string;
6
+ };
7
+ }
8
+ export type PushSubscriptionRecord = {
9
+ transport: 'webpush';
10
+ root: string;
11
+ name: string;
12
+ subscription: WebPushSubscription;
13
+ lastDeliveryAt?: string;
14
+ } | {
15
+ transport: 'expo';
16
+ root: string;
17
+ name: string;
18
+ token: string;
19
+ lastDeliveryAt?: string;
20
+ };
21
+ export interface PushStore {
22
+ version: 1;
23
+ subscriptions: PushSubscriptionRecord[];
24
+ }
25
+ export declare function defaultPushStorePath(): string;
26
+ export declare function subscriptionKey(record: PushSubscriptionRecord): string;
27
+ export declare function loadPushStore(path: string): Promise<PushStore>;
28
+ export declare function savePushStore(path: string, store: PushStore): Promise<void>;
29
+ export declare function subscriptionsForProject(store: PushStore, root: string): PushSubscriptionRecord[];
30
+ export declare function upsertSubscription(store: PushStore, record: PushSubscriptionRecord): PushStore;
31
+ export interface RemoveSubscriptionResult {
32
+ store: PushStore;
33
+ removed: boolean;
34
+ }
35
+ export declare function removeSubscription(store: PushStore, root: string, transport: PushSubscriptionRecord['transport'], key: string): RemoveSubscriptionResult;
36
+ export declare function withPushStoreLock<T>(fn: () => Promise<T>): Promise<T>;
37
+ //# sourceMappingURL=push-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push-store.d.ts","sourceRoot":"","sources":["../../src/core/push-store.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACxC;AAED,MAAM,MAAM,sBAAsB,GAC9B;IACE,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,mBAAmB,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GACD;IACE,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEN,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,CAAC,CAAC;IACX,aAAa,EAAE,sBAAsB,EAAE,CAAC;CACzC;AAID,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,CAEtE;AAoCD,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAgBpE;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAQjF;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,sBAAsB,EAAE,CAEhG;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,sBAAsB,GAAG,SAAS,CAO9F;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,sBAAsB,CAAC,WAAW,CAAC,EAC9C,GAAG,EAAE,MAAM,GACV,wBAAwB,CAQ1B;AAID,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAOrE"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=push-store.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push-store.test.d.ts","sourceRoot":"","sources":["../../src/core/push-store.test.ts"],"names":[],"mappings":""}
@@ -8,6 +8,9 @@ export declare function usageForEntry(entry: TaskLogEntry): RunUsage | undefined
8
8
  /** The most recent tasks.log entry per plan that's still `interrupted` — a newer
9
9
  * `started` line on that plan becomes the newest entry, dropping it from this list. */
10
10
  export declare function interruptedNotices(taskLog: TaskLogEntry[]): TaskLogEntry[];
11
+ /** A deep link (a push notification's `task:<id>`) can outrun the client: the task
12
+ * may still show as `running:<id>` if it hasn't rolled into tasks.log yet. */
13
+ export declare function resolveLogRow(rows: LogRow[], entryId: string): LogRow | undefined;
11
14
  /** The one stream (IDEA-237): every `tasks.log` entry, plus failures with no run
12
15
  * behind them (an 'agent-run' issue is the same failure as its tasks.log 'error'
13
16
  * entry, so it's excluded here to avoid a duplicate row), plus tasks still in
@@ -1 +1 @@
1
- {"version":3,"file":"run-rows.d.ts","sourceRoot":"","sources":["../../src/core/run-rows.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,KAAK,EACL,MAAM,EACN,YAAY,EAEZ,QAAQ,EAER,YAAY,EACb,MAAM,gBAAgB,CAAC;AAIxB;kEACkE;AAClE,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAE5D;AAYD;8EAC8E;AAC9E,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,QAAQ,GAAG,SAAS,CAgBvE;AAED;uFACuF;AACvF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAQ1E;AAqFD;;;2EAG2E;AAC3E,wBAAgB,YAAY,CAC1B,OAAO,EAAE,YAAY,EAAE,EACvB,MAAM,EAAE,KAAK,EAAE,EACf,WAAW,EAAE,cAAc,EAAE,EAC7B,aAAa,EAAE,YAAY,EAAE,GAC5B,MAAM,EAAE,CAsBV"}
1
+ {"version":3,"file":"run-rows.d.ts","sourceRoot":"","sources":["../../src/core/run-rows.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,KAAK,EACL,MAAM,EACN,YAAY,EAEZ,QAAQ,EAER,YAAY,EACb,MAAM,gBAAgB,CAAC;AAIxB;kEACkE;AAClE,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAE5D;AAYD;8EAC8E;AAC9E,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,QAAQ,GAAG,SAAS,CAgBvE;AAED;uFACuF;AACvF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAQ1E;AAuFD;8EAC8E;AAC9E,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAOjF;AAED;;;2EAG2E;AAC3E,wBAAgB,YAAY,CAC1B,OAAO,EAAE,YAAY,EAAE,EACvB,MAAM,EAAE,KAAK,EAAE,EACf,WAAW,EAAE,cAAc,EAAE,EAC7B,aAAa,EAAE,YAAY,EAAE,GAC5B,MAAM,EAAE,CAsBV"}
@@ -6,4 +6,5 @@ export interface InitOptions {
6
6
  projectName: string;
7
7
  }
8
8
  export declare function initProject(targetDir: string, options: InitOptions): Promise<void>;
9
+ export declare function scaffoldClaudeCodeIntegration(targetDir: string): Promise<void>;
9
10
  //# sourceMappingURL=scaffold.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../../src/core/scaffold/scaffold.ts"],"names":[],"mappings":"AAgCA,eAAO,MAAM,kBAAkB,QAAmB,CAAC;AAEnD,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,SAAS,EAAE,MAAM;CAG9B;AAaD,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAgDxF"}
1
+ {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../../src/core/scaffold/scaffold.ts"],"names":[],"mappings":"AAgCA,eAAO,MAAM,kBAAkB,QAAmB,CAAC;AAEnD,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,SAAS,EAAE,MAAM;CAG9B;AAaD,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAgDxF;AAoCD,wBAAsB,6BAA6B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBpF"}
@@ -1,3 +1,9 @@
1
+ export type PackageManager = 'pnpm' | 'npm' | 'yarn' | 'bun';
2
+ export declare function detectPackageManager(targetDir: string): PackageManager;
3
+ export declare function hasPaperCampDependency(targetDir: string): boolean;
4
+ export declare function buildPermissionsAllow(packageManager: PackageManager): string[];
5
+ export declare function buildSessionStartCommand(hasDependency: boolean): string;
6
+ export declare function mergeClaudeSettingsJson(existingContent: string, targetDir: string): string;
7
+ export declare function buildClaudeSettingsJson(targetDir: string): string;
1
8
  export declare const SKILL_MD_CONTENT = "---\nname: paper-camp\ndescription: Work inside a project that has a papercamp/ folder \u2014 its unified idea entities (each holding its plan as a section), with decisions and open questions logged as notes on the idea they bind. Use this whenever the working directory contains papercamp/ (papercamp/ideas/), and especially before starting, continuing, or completing any plan phase, drafting an idea, logging a decision, or answering \"what are we working on / what's next\".\n---\n\n# Paper Camp\n\nPaper Camp is this project's planning methodology: plans and ideas are one\nthing, a unified entity file under `papercamp/ideas/`, with decisions and\nopen questions logged as notes bound to the idea they concern. This skill\ntells you how to read that state before acting and how to keep it honest as\nyou work.\n\nIf a `papercamp` MCP server is connected in this session, prefer its tools\n(list/get plans, update phase, etc.) over raw file access \u2014\nthey enforce the same guards (id allocation, branch conflicts) that the file\ngrammar below assumes. Everything in this skill still applies conceptually;\nonly the mechanism changes.\n\n## Before doing any work\n\nRead, in this order, whatever exists:\n\n1. `papercamp/ideas/` \u2014 one file per entity, named by id. Ideas and plans are\n one thing: an entity is an *idea* for its whole life, and its plan is a\n `### Phases` section inside the same file.\n2. The specific entity file at `papercamp/ideas/<ID>.md` (e.g. `IDEA-43.md`)\n for the work you're about to do \u2014 YAML frontmatter (`id`, `title`,\n `type`, `status`, `tags`, ...) plus prose rationale, then optionally a\n `### Phases` list of `- [ ]`/`- [x]` checkboxes with an indented\n description under each. Done/dropped entities live in\n `papercamp/ideas/archive/`.\n Its notes carry any decision or open question bound to it \u2014 settled calls\n you shouldn't re-litigate without flagging it to the user first, and\n unresolved questions that might block or redirect the work you're about\n to start.\n\nSkip files that don't exist yet (a fresh project may have empty logs).\n\n## While working\n\n- Work one plan phase at a time unless told otherwise \u2014 don't cascade into\n later phases just because they look quick.\n- If a phase's boundary or intent is unclear, ask before continuing.\n- Prose in plans and ideas is more current than your memory of past\n conversations. If they conflict, the files win \u2014 say so and resync.\n\n## Keep the project current as you go\n\n- **Plan phases**: when you finish a phase, flip its checkbox from `- [ ]` to\n `- [x]` in the plan's frontmatter file. Change only that line \u2014 don't touch\n other phases or prose.\n- **Plan status**: keep the plan's `status:` frontmatter honest\n (`planned` / `in-progress` / `review` / `done`). When every phase is\n checked, set status to `review` \u2014 never `done`. `done` is a human-only\n promotion after review; an agent finishing the last phase does not close\n the plan itself.\n- **Decisions / open questions**: if you settle something ambiguous while\n working, log it as a decision note on the idea it bounds; if you surface a\n question you can't resolve yourself, add it as a question note on that idea\n rather than guessing silently.\n\n## What this skill deliberately does not do\n\nIt does not maintain a separate \"current focus\" file \u2014 that's derived at\nsession start from live plan data, not hand-maintained here. It does\nnot define the file formats in full; treat the existing files under\n`papercamp/` as the grammar reference (mirror their structure exactly rather\nthan inventing a new shape).\n";
2
- export declare const CLAUDE_SETTINGS_JSON: string;
3
9
  //# sourceMappingURL=templates.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../../src/core/scaffold/templates.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gBAAgB,smHAqE5B,CAAC;AAIF,eAAO,MAAM,oBAAoB,QAa5B,CAAC"}
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../../src/core/scaffold/templates.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;AAS7D,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAKtE;AAcD,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAQjE;AAYD,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,cAAc,GAAG,MAAM,EAAE,CAW9E;AAED,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,OAAO,GAAG,MAAM,CAEvE;AAED,wBAAgB,uBAAuB,CAAC,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAiB1F;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAqBjE;AAED,eAAO,MAAM,gBAAgB,smHAqE5B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=templates.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.test.d.ts","sourceRoot":"","sources":["../../../src/core/scaffold/templates.test.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../src/core/stats.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,YAAY,EAEZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACb,MAAM,gBAAgB,CAAC;AAMxB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAkE9C,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,WAAW,EAAE,GACtB,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAOvC;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG;IACzD,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB,CAUA;AAED;wEACwE;AACxE,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAOlD;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CASpE;AAqBD,wBAAgB,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAoBpE;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,GAAG,IAAI,CAa5E;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,SAAI,GAAG,QAAQ,EAAE,CAsBjF;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CA4B7E"}
1
+ {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../src/core/stats.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,YAAY,EAEZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACb,MAAM,gBAAgB,CAAC;AAMxB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAkE9C,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,WAAW,EAAE,GACtB,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAOvC;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG;IACzD,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB,CAUA;AAED;wEACwE;AACxE,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAOlD;AAID,wBAAgB,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAYpE;AA2BD,wBAAgB,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAyBpE;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,GAAG,IAAI,CAa5E;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,SAAI,GAAG,QAAQ,EAAE,CAsBjF;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CA4B7E"}
@@ -0,0 +1,7 @@
1
+ export interface VapidKeyPair {
2
+ publicKey: string;
3
+ privateKey: string;
4
+ }
5
+ export declare function defaultVapidKeysPath(): string;
6
+ export declare function loadOrMintVapidKeys(path: string): Promise<VapidKeyPair>;
7
+ //# sourceMappingURL=vapid-keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vapid-keys.d.ts","sourceRoot":"","sources":["../../src/core/vapid-keys.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAmDD,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAM7E"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=vapid-keys.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vapid-keys.test.d.ts","sourceRoot":"","sources":["../../src/core/vapid-keys.test.ts"],"names":[],"mappings":""}