@dendelion/paper-camp 0.5.0 → 0.7.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.
- package/dist/app/assets/main-5JSkR2Qf.js +182 -0
- package/dist/app/assets/main-5JSkR2Qf.js.map +1 -0
- package/dist/app/assets/main-B8HU5n_F.css +1 -0
- package/dist/app/index.html +2 -2
- package/dist/chunks/{serializer._5uZJ4OM.js → serializer.DiYtNSka.js} +1399 -1109
- package/dist/chunks/serializer.DiYtNSka.js.map +1 -0
- package/dist/cli/index.js +6143 -5891
- package/dist/cli/index.js.map +1 -1
- package/dist/core/branch.d.ts +8 -0
- package/dist/core/branch.d.ts.map +1 -0
- package/dist/core/entity.test.d.ts +2 -0
- package/dist/core/entity.test.d.ts.map +1 -0
- package/dist/core/index.js +55 -50
- package/dist/core/parser.d.ts +9 -1
- package/dist/core/parser.d.ts.map +1 -1
- package/dist/core/pr.d.ts +27 -0
- package/dist/core/pr.d.ts.map +1 -0
- package/dist/core/pr.test.d.ts +2 -0
- package/dist/core/pr.test.d.ts.map +1 -0
- package/dist/core/readers.d.ts +22 -20
- package/dist/core/readers.d.ts.map +1 -1
- package/dist/core/scaffold.d.ts.map +1 -1
- package/dist/core/schemas.d.ts +44 -5
- package/dist/core/schemas.d.ts.map +1 -1
- package/dist/core/serializer.d.ts +37 -6
- package/dist/core/serializer.d.ts.map +1 -1
- package/dist/core/status.d.ts +27 -0
- package/dist/core/status.d.ts.map +1 -0
- package/dist/core/status.test.d.ts +2 -0
- package/dist/core/status.test.d.ts.map +1 -0
- package/dist/core/templates.d.ts +1 -1
- package/dist/core/templates.d.ts.map +1 -1
- package/dist/types/index.d.ts +77 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/package.json +2 -2
- package/dist/app/assets/main-BN5y2u1i.js +0 -216
- package/dist/app/assets/main-BN5y2u1i.js.map +0 -1
- package/dist/app/assets/main-DvILXiwx.css +0 -1
- package/dist/chunks/serializer._5uZJ4OM.js.map +0 -1
- package/dist/core/idea-status.d.ts +0 -7
- package/dist/core/idea-status.d.ts.map +0 -1
- package/dist/core/idea-status.test.d.ts +0 -2
- package/dist/core/idea-status.test.d.ts.map +0 -1
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feature-branch name for an entity, matching the `kind/id-slug` convention
|
|
3
|
+
* that `branchEntityId`/`getFeatureBranchPlanId` parse back out. Shared so
|
|
4
|
+
* branch creation (`ensureBranch`) and PR resolution (`resolvePrMerged`)
|
|
5
|
+
* target the exact same name.
|
|
6
|
+
*/
|
|
7
|
+
export declare function branchName(id: string | undefined, type: string | undefined, title: string): string | undefined;
|
|
8
|
+
//# sourceMappingURL=branch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"branch.d.ts","sourceRoot":"","sources":["../../src/core/branch.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,EAAE,EAAE,MAAM,GAAG,SAAS,EACtB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,KAAK,EAAE,MAAM,GACZ,MAAM,GAAG,SAAS,CAQpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity.test.d.ts","sourceRoot":"","sources":["../../src/core/entity.test.ts"],"names":[],"mappings":""}
|
package/dist/core/index.js
CHANGED
|
@@ -1,55 +1,60 @@
|
|
|
1
|
-
import { A as e, P as
|
|
2
|
-
import { AGENT_IDS as
|
|
1
|
+
import { A as e, P as t, a as r, b as n, c as i, d as o, e as p, f as m, g as E, h as d, i as l, j as S, k as c, l as P, m as f, n as F, o as y, p as I, q as A, r as g, s as h, t as N, u as T, v as D, w as _, x as u, y as C, z as O, B as L, C as v, D as G, E as Q, F as x, G as R, H as k, I as z, J as B, K as U, L as j, M as w, N as K, O as M, Q as V, R as W, S as b, T as q, U as H, V as J } from "../chunks/serializer.DiYtNSka.js";
|
|
2
|
+
import { AGENT_IDS as Y, AGENT_LABELS as Z, AGENT_OPTIONS as $, DEFAULT_AGENTS as aa, PLAN_KINDS as sa, PLAN_STATUSES as ea, coerceAgentConfig as ta } from "../types/index.js";
|
|
3
3
|
export {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
Y as AGENT_IDS,
|
|
5
|
+
Z as AGENT_LABELS,
|
|
6
|
+
$ as AGENT_OPTIONS,
|
|
7
7
|
e as AlreadyInitializedError,
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
aa as DEFAULT_AGENTS,
|
|
9
|
+
t as PAPER_CAMP_VERSION,
|
|
10
|
+
sa as PLAN_KINDS,
|
|
11
|
+
ea as PLAN_STATUSES,
|
|
12
|
+
r as agentConfigSchema,
|
|
13
|
+
n as appendBlock,
|
|
14
14
|
i as applyEnvEntries,
|
|
15
|
-
o as
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
f as
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
h as
|
|
32
|
-
|
|
33
|
-
T as
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
L as
|
|
40
|
-
|
|
41
|
-
G as
|
|
42
|
-
Q as
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
w as
|
|
51
|
-
K as
|
|
52
|
-
|
|
53
|
-
|
|
15
|
+
o as archiveEntityFile,
|
|
16
|
+
p as assignEntityId,
|
|
17
|
+
m as assignPlanId,
|
|
18
|
+
ta as coerceAgentConfig,
|
|
19
|
+
E as dateString,
|
|
20
|
+
d as decisionFieldsSchema,
|
|
21
|
+
l as entityFrontmatterSchema,
|
|
22
|
+
S as entityToIdea,
|
|
23
|
+
c as entityToPlan,
|
|
24
|
+
P as findConsistencyIssues,
|
|
25
|
+
f as formatDecisionEntry,
|
|
26
|
+
F as formatEntitiesIndex,
|
|
27
|
+
y as formatEntityFile,
|
|
28
|
+
I as formatIdeaFile,
|
|
29
|
+
A as formatOpenQuestionEntry,
|
|
30
|
+
g as formatOpenQuestions,
|
|
31
|
+
h as formatPlanEntry,
|
|
32
|
+
N as formatPlanFile,
|
|
33
|
+
T as formatPlans,
|
|
34
|
+
D as formatProgressEntry,
|
|
35
|
+
_ as ideaFrontmatterSchema,
|
|
36
|
+
u as initProject,
|
|
37
|
+
C as openQuestionFieldsSchema,
|
|
38
|
+
O as paperCampConfigSchema,
|
|
39
|
+
L as parseDecisions,
|
|
40
|
+
v as parseEntityFile,
|
|
41
|
+
G as parseEnv,
|
|
42
|
+
Q as parseFrontmatter,
|
|
43
|
+
x as parseIdeaFile,
|
|
44
|
+
R as parseIdeas,
|
|
45
|
+
k as parseOpenQuestions,
|
|
46
|
+
z as parsePlanFile,
|
|
47
|
+
B as parsePlans,
|
|
48
|
+
U as parseProgress,
|
|
49
|
+
j as parseRawEntries,
|
|
50
|
+
w as planFieldsSchema,
|
|
51
|
+
K as planFrontmatterSchema,
|
|
52
|
+
M as prependProgressItem,
|
|
53
|
+
V as readEntities,
|
|
54
|
+
W as readEntitiesWithDerivedStatus,
|
|
55
|
+
b as readNoteEntries,
|
|
56
|
+
q as readWorkEntries,
|
|
57
|
+
H as serializeFrontmatter,
|
|
58
|
+
J as todayDateString
|
|
54
59
|
};
|
|
55
60
|
//# sourceMappingURL=index.js.map
|
package/dist/core/parser.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { ConsistencyIssue, DecisionEntry, IdeaEntry, OpenQuestionEntry, ParseResult, ParseWarning, PlanEntry, ProgressEntry, RawEntry } from '../types/index';
|
|
2
|
+
import { ConsistencyIssue, DecisionEntry, EntityEntry, IdeaEntry, OpenQuestionEntry, ParseResult, ParseWarning, PlanEntry, ProgressEntry, RawEntry } from '../types/index';
|
|
3
3
|
export declare function parseRawEntries(markdown: string): RawEntry[];
|
|
4
4
|
export declare function parsePlans(markdown: string): ParseResult<PlanEntry>;
|
|
5
5
|
export declare function parseDecisions(markdown: string): ParseResult<DecisionEntry>;
|
|
@@ -20,6 +20,14 @@ export declare function parseFrontmatter<T>(content: string, schema: z.ZodType<T
|
|
|
20
20
|
* The body after frontmatter is scanned for ### Phases and ### Log sections,
|
|
21
21
|
* same as the monolithic parser.
|
|
22
22
|
*/
|
|
23
|
+
/**
|
|
24
|
+
* Parses a unified entity file (FEAT-42 phases 7+): one file per entity — an
|
|
25
|
+
* "idea" for its whole life, plan as an optional `### Phases` body section.
|
|
26
|
+
* Same body pipeline as parsePlanFile (Phases/Log/Clarifications extraction);
|
|
27
|
+
* the frontmatter differs: `type` instead of `kind`, no `idea:` backlink, and
|
|
28
|
+
* the note/status asymmetry from the idea schema folded in.
|
|
29
|
+
*/
|
|
30
|
+
export declare function parseEntityFile(content: string): ParseResult<EntityEntry>;
|
|
23
31
|
export declare function parsePlanFile(content: string): ParseResult<PlanEntry>;
|
|
24
32
|
/**
|
|
25
33
|
* Parse a single per-idea file with YAML frontmatter.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/core/parser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,SAAS,EAET,iBAAiB,EACjB,WAAW,EACX,YAAY,EAEZ,SAAS,EACT,aAAa,EACb,QAAQ,EACT,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/core/parser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,SAAS,EAET,iBAAiB,EACjB,WAAW,EACX,YAAY,EAEZ,SAAS,EACT,aAAa,EACb,QAAQ,EACT,MAAM,gBAAgB,CAAC;AAuHxB,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE,CAwC5D;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,CAqCnE;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CAAC,aAAa,CAAC,CAwB3E;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CAAC,iBAAiB,CAAC,CAyBnF;AAQD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GACnB;IAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,YAAY,EAAE,CAAA;CAAE,CAyC5D;AAED;;;;GAIG;AACH;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC,CA+CzE;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,CAwCrE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,CAuBrE;AAMD;8EAC8E;AAC9E,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,CAYxD;AAED;;0BAE0B;AAC1B,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,aAAa,EAAE,EAC1B,aAAa,EAAE,iBAAiB,EAAE,EAClC,KAAK,EAAE,SAAS,EAAE,GACjB,gBAAgB,EAAE,CA0CpB;AAKD,kGAAkG;AAClG,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE,CAwB/D"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { PrInfo, ReviewThread } from '../types/index';
|
|
2
|
+
/**
|
|
3
|
+
* Cache window for the resolved PR set — long enough that a worklist read doesn't
|
|
4
|
+
* re-shell out to `gh` on every request, short enough that a merge or state
|
|
5
|
+
* change shows up within the same working session.
|
|
6
|
+
*/
|
|
7
|
+
export declare const PR_CACHE_TTL_MS: number;
|
|
8
|
+
/**
|
|
9
|
+
* Per-comment detail for a PR's unresolved review threads, for the fix-review
|
|
10
|
+
* launch path (`POST /api/agent/launch-fix-review`) to hand to
|
|
11
|
+
* `buildFixReviewPrompt`. Each thread is represented by its first comment, since
|
|
12
|
+
* that's the one that states what needs fixing. Best-effort: resolves `[]` on
|
|
13
|
+
* any failure so a launch with no readable threads falls back to
|
|
14
|
+
* `buildFixReviewPrompt`'s own empty-threads guard rather than erroring out.
|
|
15
|
+
*/
|
|
16
|
+
export declare function fetchUnresolvedThreads(root: string, url: string): Promise<ReviewThread[]>;
|
|
17
|
+
/**
|
|
18
|
+
* Every PR in the repo indexed by the entity id it references, resolved via a
|
|
19
|
+
* single `gh pr list` and cached for `ttlMs` — see IDEA-56's PR-driven status
|
|
20
|
+
* derivation. `undefined` when the lookup can't resolve at all (no `gh`, not
|
|
21
|
+
* authenticated, offline, no GitHub remote); callers fall back to stored status.
|
|
22
|
+
* An entity simply absent from the returned map has no PR (a confirmed answer).
|
|
23
|
+
*/
|
|
24
|
+
export declare function resolvePrsByEntity(root: string, ttlMs?: number): Promise<Map<string, PrInfo> | undefined>;
|
|
25
|
+
/** Test-only: clears the module-level PR cache between test cases. */
|
|
26
|
+
export declare function clearPrCache(): void;
|
|
27
|
+
//# sourceMappingURL=pr.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pr.d.ts","sourceRoot":"","sources":["../../src/core/pr.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAkB,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAW3E;;;;GAIG;AACH,eAAO,MAAM,eAAe,QAAgB,CAAC;AAkM7C;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAiB/F;AAoED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,KAAK,SAAkB,GACtB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,CAS1C;AAED,sEAAsE;AACtE,wBAAgB,YAAY,IAAI,IAAI,CAEnC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pr.test.d.ts","sourceRoot":"","sources":["../../src/core/pr.test.ts"],"names":[],"mappings":""}
|
package/dist/core/readers.d.ts
CHANGED
|
@@ -1,27 +1,29 @@
|
|
|
1
|
-
import { IdeaEntry, ParseResult, PlanEntry } from '../types/index';
|
|
1
|
+
import { EntityEntry, IdeaEntry, ParseResult, PlanEntry, PrInfo } from '../types/index';
|
|
2
2
|
/**
|
|
3
|
-
* Reads
|
|
4
|
-
* (done/dropped
|
|
5
|
-
* index.md in either directory.
|
|
6
|
-
* Returns empty result if the directory doesn't exist or has no plan files.
|
|
3
|
+
* Reads every entity from the unified directory, including its `archive/`
|
|
4
|
+
* subdirectory (done/dropped entities live there). Excludes index.md.
|
|
7
5
|
*/
|
|
8
|
-
export declare function
|
|
6
|
+
export declare function readEntities(ideasDir: string): Promise<ParseResult<EntityEntry> & {
|
|
9
7
|
fileCount: number;
|
|
10
8
|
}>;
|
|
11
9
|
/**
|
|
12
|
-
*
|
|
10
|
+
* PlanEntry view of a work entity (anything that isn't a note): `kind` is the
|
|
11
|
+
* entity's `type`. Lets the plan-shaped pipeline (API responses, prompts, UI)
|
|
12
|
+
* keep working until the UI morphs to entities directly.
|
|
13
|
+
*
|
|
14
|
+
* `status` is derived from phases + PR state rather than read straight off
|
|
15
|
+
* `e.status` — see `deriveStatus`. `pr` is the entity's resolved PR (or
|
|
16
|
+
* `undefined`); `prLookupResolved` is whether the PR listing succeeded (a
|
|
17
|
+
* failed/absent lookup falls back to the stored override). Note this only
|
|
18
|
+
* affects the *view*: `e.status` itself stays the raw stored override, so
|
|
19
|
+
* round-tripping an `EntityEntry` back to disk never persists a derived value.
|
|
13
20
|
*/
|
|
14
|
-
export declare function
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
export declare function readPlansMerged(plansDir: string, monolithicPath: string): Promise<ParseResult<PlanEntry>>;
|
|
23
|
-
/**
|
|
24
|
-
* Merges per-file idea entries with monolithic fallback, deduplicating by id.
|
|
25
|
-
*/
|
|
26
|
-
export declare function readIdeasMerged(ideasDir: string, monolithicPath: string): Promise<ParseResult<IdeaEntry>>;
|
|
21
|
+
export declare function entityToPlan(e: EntityEntry, pr?: PrInfo, prLookupResolved?: boolean): PlanEntry;
|
|
22
|
+
/** IdeaEntry view of a note entity, for the note-shaped API/UI surface. */
|
|
23
|
+
export declare function entityToIdea(e: EntityEntry): IdeaEntry;
|
|
24
|
+
export declare function readEntitiesWithDerivedStatus(ideasDir: string): Promise<ParseResult<EntityEntry>>;
|
|
25
|
+
/** All work entities (non-notes) in PlanEntry shape — the `/api/plans` view. */
|
|
26
|
+
export declare function readWorkEntries(ideasDir: string): Promise<ParseResult<PlanEntry>>;
|
|
27
|
+
/** All note entities in IdeaEntry shape — the `/api/ideas` view. */
|
|
28
|
+
export declare function readNoteEntries(ideasDir: string): Promise<ParseResult<IdeaEntry>>;
|
|
27
29
|
//# sourceMappingURL=readers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readers.d.ts","sourceRoot":"","sources":["../../src/core/readers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"readers.d.ts","sourceRoot":"","sources":["../../src/core/readers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EAET,WAAW,EAEX,SAAS,EAET,MAAM,EACP,MAAM,gBAAgB,CAAC;AAgCxB;;;GAGG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAqB3D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,gBAAgB,UAAQ,GAAG,SAAS,CAmB7F;AAED,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,CAAC,EAAE,WAAW,GAAG,SAAS,CAStD;AAiBD,wBAAsB,6BAA6B,CACjD,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAOnC;AAED,gFAAgF;AAChF,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAQvF;AAED,oEAAoE;AACpE,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAMvF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../src/core/scaffold.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAE1C,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,SAAS,EAAE,MAAM;CAG9B;AAaD,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../src/core/scaffold.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAE1C,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,SAAS,EAAE,MAAM;CAG9B;AAaD,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA2CxF"}
|
package/dist/core/schemas.d.ts
CHANGED
|
@@ -83,21 +83,59 @@ export declare const planFrontmatterSchema: z.ZodObject<{
|
|
|
83
83
|
export declare const ideaFrontmatterSchema: z.ZodObject<{
|
|
84
84
|
id: z.ZodString;
|
|
85
85
|
title: z.ZodString;
|
|
86
|
+
kind: z.ZodOptional<z.ZodEnum<{
|
|
87
|
+
idea: "idea";
|
|
88
|
+
note: "note";
|
|
89
|
+
}>>;
|
|
86
90
|
status: z.ZodOptional<z.ZodEnum<{
|
|
91
|
+
done: "done";
|
|
92
|
+
dropped: "dropped";
|
|
93
|
+
open: "open";
|
|
94
|
+
}>>;
|
|
95
|
+
}, z.core.$strip>;
|
|
96
|
+
export declare const entityFrontmatterSchema: z.ZodObject<{
|
|
97
|
+
id: z.ZodString;
|
|
98
|
+
title: z.ZodString;
|
|
99
|
+
type: z.ZodOptional<z.ZodEnum<{
|
|
100
|
+
feat: "feat";
|
|
101
|
+
fix: "fix";
|
|
102
|
+
chore: "chore";
|
|
103
|
+
docs: "docs";
|
|
104
|
+
refactor: "refactor";
|
|
105
|
+
}>>;
|
|
106
|
+
kind: z.ZodOptional<z.ZodEnum<{
|
|
107
|
+
note: "note";
|
|
108
|
+
}>>;
|
|
109
|
+
status: z.ZodOptional<z.ZodEnum<{
|
|
110
|
+
idea: "idea";
|
|
87
111
|
planned: "planned";
|
|
112
|
+
"in-progress": "in-progress";
|
|
113
|
+
review: "review";
|
|
88
114
|
done: "done";
|
|
115
|
+
dropped: "dropped";
|
|
116
|
+
open: "open";
|
|
117
|
+
}>>;
|
|
118
|
+
agent: z.ZodOptional<z.ZodEnum<{
|
|
119
|
+
"claude-code": "claude-code";
|
|
120
|
+
opencode: "opencode";
|
|
89
121
|
}>>;
|
|
122
|
+
created: z.ZodString;
|
|
123
|
+
updated: z.ZodOptional<z.ZodString>;
|
|
124
|
+
audited: z.ZodOptional<z.ZodString>;
|
|
125
|
+
'audited-hash': z.ZodOptional<z.ZodString>;
|
|
126
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
90
127
|
}, z.core.$strip>;
|
|
91
128
|
export declare const paperCampConfigSchema: z.ZodObject<{
|
|
92
129
|
version: z.ZodString;
|
|
93
130
|
projectName: z.ZodString;
|
|
94
131
|
initializedAt: z.ZodString;
|
|
95
132
|
nextId: z.ZodOptional<z.ZodObject<{
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
133
|
+
idea: z.ZodOptional<z.ZodNumber>;
|
|
134
|
+
feat: z.ZodOptional<z.ZodNumber>;
|
|
135
|
+
fix: z.ZodOptional<z.ZodNumber>;
|
|
136
|
+
chore: z.ZodOptional<z.ZodNumber>;
|
|
137
|
+
docs: z.ZodOptional<z.ZodNumber>;
|
|
138
|
+
refactor: z.ZodOptional<z.ZodNumber>;
|
|
101
139
|
}, z.core.$strip>>;
|
|
102
140
|
defaultAgent: z.ZodOptional<z.ZodEnum<{
|
|
103
141
|
"claude-code": "claude-code";
|
|
@@ -143,4 +181,5 @@ export type DecisionFields = z.infer<typeof decisionFieldsSchema>;
|
|
|
143
181
|
export type OpenQuestionFields = z.infer<typeof openQuestionFieldsSchema>;
|
|
144
182
|
export type PlanFrontmatter = z.infer<typeof planFrontmatterSchema>;
|
|
145
183
|
export type IdeaFrontmatter = z.infer<typeof ideaFrontmatterSchema>;
|
|
184
|
+
export type EntityFrontmatter = z.infer<typeof entityFrontmatterSchema>;
|
|
146
185
|
//# sourceMappingURL=schemas.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/core/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,iBAAiB;;;;;;;kBAO7B,CAAC;AAEF,eAAO,MAAM,UAAU,aAAiE,CAAC;AAQzF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;iBAS3B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;iBAI/B,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;iBAKnC,CAAC;AAYH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmBhC,CAAC;AAEH,eAAO,MAAM,qBAAqB
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/core/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,iBAAiB;;;;;;;kBAO7B,CAAC;AAEF,eAAO,MAAM,UAAU,aAAiE,CAAC;AAQzF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;iBAS3B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;iBAI/B,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;iBAKnC,CAAC;AAYH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAmBhC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;iBAgB9B,CAAC;AASL,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA+ChC,CAAC;AAEL,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0BhC,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,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,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EntityEntry, LogEntry, PhaseItem } from '../types/index';
|
|
2
2
|
export declare function todayDateString(): string;
|
|
3
3
|
/**
|
|
4
4
|
* Mints the next `<KIND>-<N>` plan ID from the persistent counter in `papercamp/config.json`,
|
|
@@ -88,23 +88,54 @@ interface NewPlanFileInput {
|
|
|
88
88
|
* ...
|
|
89
89
|
*/
|
|
90
90
|
export declare function formatPlanFile(input: NewPlanFileInput): string;
|
|
91
|
+
interface NewEntityFileInput {
|
|
92
|
+
id: string;
|
|
93
|
+
title: string;
|
|
94
|
+
type?: string;
|
|
95
|
+
kind?: string;
|
|
96
|
+
status?: string;
|
|
97
|
+
agent?: string;
|
|
98
|
+
created: string;
|
|
99
|
+
updated?: string;
|
|
100
|
+
audited?: string;
|
|
101
|
+
auditedHash?: string;
|
|
102
|
+
tags?: string[];
|
|
103
|
+
body?: string;
|
|
104
|
+
phases?: PhaseItem[];
|
|
105
|
+
log?: LogEntry[];
|
|
106
|
+
clarifications?: LogEntry[];
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Serializes a unified entity file (FEAT-42 phases 7+) — same body sections as
|
|
110
|
+
* formatPlanFile (Clarifications/Phases/Log), but `type` instead of `kind`, no
|
|
111
|
+
* `idea:` backlink, and no `## id: title` body heading (title lives in
|
|
112
|
+
* frontmatter only).
|
|
113
|
+
*/
|
|
114
|
+
export declare function formatEntityFile(input: NewEntityFileInput): string;
|
|
115
|
+
/**
|
|
116
|
+
* Mints the next lifetime IDEA-N entity id from the unified `nextId.idea`
|
|
117
|
+
* counter — the single id space every entity lives in after the FEAT-42
|
|
118
|
+
* migration. Same chaining/guarantees as assignPlanId (which it delegates to).
|
|
119
|
+
*/
|
|
120
|
+
export declare function assignEntityId(configPath: string): Promise<string | undefined>;
|
|
91
121
|
interface NewIdeaFileInput {
|
|
92
122
|
id: string;
|
|
93
123
|
title: string;
|
|
124
|
+
kind?: string;
|
|
94
125
|
status?: string;
|
|
95
126
|
body?: string;
|
|
127
|
+
log?: LogEntry[];
|
|
96
128
|
}
|
|
97
129
|
/**
|
|
98
130
|
* Serializes an idea entry as a standalone file with YAML frontmatter.
|
|
99
131
|
*/
|
|
100
132
|
export declare function formatIdeaFile(input: NewIdeaFileInput): string;
|
|
101
133
|
/**
|
|
102
|
-
* Moves
|
|
134
|
+
* Moves an entity from papercamp/ideas/<id>.md to papercamp/ideas/archive/<id>.md.
|
|
103
135
|
* This is a pure file move — no parse-and-re-serialize step.
|
|
104
|
-
* Returns true if the file was moved, false if no
|
|
136
|
+
* Returns true if the file was moved, false if no file exists for this entity.
|
|
105
137
|
*/
|
|
106
|
-
export declare function
|
|
107
|
-
export declare function
|
|
108
|
-
export declare function formatIdeasIndex(ideas: IdeaEntry[]): string;
|
|
138
|
+
export declare function archiveEntityFile(root: string, entityId: string): Promise<boolean>;
|
|
139
|
+
export declare function formatEntitiesIndex(entities: EntityEntry[]): string;
|
|
109
140
|
export {};
|
|
110
141
|
//# sourceMappingURL=serializer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../../src/core/serializer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../../src/core/serializer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { EntityStatus, PhaseItem, PrInfo } from '../types/index';
|
|
2
|
+
/** The subset of an entity's shape the status ladder needs to look at. */
|
|
3
|
+
export interface StatusDerivationInput {
|
|
4
|
+
kind?: 'note';
|
|
5
|
+
status?: EntityStatus;
|
|
6
|
+
phases: PhaseItem[];
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Derives lifecycle status from the entity's phases and its GitHub PR instead of
|
|
10
|
+
* trusting the stored `status` field, so it can't drift from reality — see
|
|
11
|
+
* IDEA-56. Tracking keys off the PR (matched by id), not a local branch: the PR
|
|
12
|
+
* is canonical across clones and survives the branch being deleted after merge.
|
|
13
|
+
*
|
|
14
|
+
* Ladder: idea (no phases) -> planned (phases, no PR) -> in-progress (PR open or
|
|
15
|
+
* draft) -> review (PR open/draft AND every phase checked) -> done (PR merged).
|
|
16
|
+
* A closed-unmerged PR reads as `dropped`. `dropped` can never be derived
|
|
17
|
+
* (abandonment leaves no trace), so a stored `dropped` always passes through;
|
|
18
|
+
* notes track open/done/dropped by hand and pass through unchanged.
|
|
19
|
+
*
|
|
20
|
+
* `pr` is the entity's resolved PR, or `undefined` when it has none / the lookup
|
|
21
|
+
* couldn't run. `prLookupResolved` says which: `false` (no `gh`, offline) falls
|
|
22
|
+
* the PR-backed rungs back to the stored override or a phases-only `planned`;
|
|
23
|
+
* `true` with no PR is a confirmed "no PR", so it derives `planned`/`idea` (a
|
|
24
|
+
* stored terminal `done` from an unmatchable legacy PR is still trusted).
|
|
25
|
+
*/
|
|
26
|
+
export declare function deriveStatus(entity: StatusDerivationInput, pr: PrInfo | undefined, prLookupResolved: boolean): EntityStatus | undefined;
|
|
27
|
+
//# sourceMappingURL=status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/core/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAEtE,0EAA0E;AAC1E,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,SAAS,EAAE,CAAC;CACrB;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,qBAAqB,EAC7B,EAAE,EAAE,MAAM,GAAG,SAAS,EACtB,gBAAgB,EAAE,OAAO,GACxB,YAAY,GAAG,SAAS,CAgB1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.test.d.ts","sourceRoot":"","sources":["../../src/core/status.test.ts"],"names":[],"mappings":""}
|
package/dist/core/templates.d.ts
CHANGED
|
@@ -4,6 +4,6 @@
|
|
|
4
4
|
* hook wiring. Kept in one place so `init`'s no-clobber writes stay simple
|
|
5
5
|
* string dumps.
|
|
6
6
|
*/
|
|
7
|
-
export declare const SKILL_MD_CONTENT = "---\nname: paper-camp\ndescription: Work inside a project that has a papercamp/ folder \u2014 its
|
|
7
|
+
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), decisions log, open questions, and progress log. Use this whenever the working directory contains papercamp/ (papercamp/ideas/, papercamp/decisions.md, papercamp/open-questions.md, papercamp/progress.md), 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, ideas, decisions, and\nopen questions live as markdown files under `papercamp/`, and an append-only\n`papercamp/progress.md` is the changelog. This skill tells you how to read that\nstate before acting and how to keep it honest as you work.\n\nIf a `papercamp` MCP server is connected in this session, prefer its tools\n(list/get plans, update phase, append progress, 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/index.md` \u2014 every entity's id/title/type/status/tags, at\n a glance. Ideas and plans are one thing: an entity is an *idea* for its\n whole life, and its plan is a `### 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/`.\n3. `papercamp/decisions.md` \u2014 settled calls that constrain your approach.\n Don't re-litigate a logged decision without flagging it to the user first.\n4. `papercamp/open-questions.md` \u2014 unresolved questions that might block or\n redirect the work you're about to start.\n5. The last handful of entries in `papercamp/progress.md` for recent context\n on what just happened.\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- **Progress log**: add one bullet describing what you did under today's\n `## YYYY-MM-DD` heading at the top of `papercamp/progress.md` (newest day\n first; create the heading if today's isn't there yet). Be specific enough\n that a future read of the log alone explains what changed and why, without\n needing to re-read the diff.\n- **Decisions / open questions**: if you settle something ambiguous while\n working, log it in `papercamp/decisions.md`; if you surface a question you\n can't resolve yourself, add it to `papercamp/open-questions.md` rather than\n 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/progress 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";
|
|
8
8
|
export declare const CLAUDE_SETTINGS_JSON: string;
|
|
9
9
|
//# sourceMappingURL=templates.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/core/templates.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/core/templates.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,gBAAgB,0pIA2E5B,CAAC;AAIF,eAAO,MAAM,oBAAoB,QAmB5B,CAAC"}
|