@frehilm/ordna-core 0.1.3 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/README.md +34 -0
  2. package/dist/config.d.ts +26 -0
  3. package/dist/config.d.ts.map +1 -1
  4. package/dist/config.js +41 -1
  5. package/dist/config.js.map +1 -1
  6. package/dist/git.d.ts +10 -0
  7. package/dist/git.d.ts.map +1 -1
  8. package/dist/git.js +14 -27
  9. package/dist/git.js.map +1 -1
  10. package/dist/index.d.ts +3 -1
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +2 -1
  13. package/dist/index.js.map +1 -1
  14. package/dist/providers/load.d.ts.map +1 -1
  15. package/dist/providers/load.js +11 -0
  16. package/dist/providers/load.js.map +1 -1
  17. package/dist/schema.d.ts +18 -1
  18. package/dist/schema.d.ts.map +1 -1
  19. package/dist/schema.js.map +1 -1
  20. package/dist/storage/auto-detect.d.ts +82 -0
  21. package/dist/storage/auto-detect.d.ts.map +1 -0
  22. package/dist/storage/auto-detect.js +158 -0
  23. package/dist/storage/auto-detect.js.map +1 -0
  24. package/dist/storage/auto-push.d.ts +36 -0
  25. package/dist/storage/auto-push.d.ts.map +1 -0
  26. package/dist/storage/auto-push.js +100 -0
  27. package/dist/storage/auto-push.js.map +1 -0
  28. package/dist/storage/backend.d.ts +86 -0
  29. package/dist/storage/backend.d.ts.map +1 -0
  30. package/dist/storage/backend.js +14 -0
  31. package/dist/storage/backend.js.map +1 -0
  32. package/dist/storage/backends/file.d.ts +31 -0
  33. package/dist/storage/backends/file.d.ts.map +1 -0
  34. package/dist/storage/backends/file.js +213 -0
  35. package/dist/storage/backends/file.js.map +1 -0
  36. package/dist/storage/backends/hybrid.d.ts +39 -0
  37. package/dist/storage/backends/hybrid.d.ts.map +1 -0
  38. package/dist/storage/backends/hybrid.js +270 -0
  39. package/dist/storage/backends/hybrid.js.map +1 -0
  40. package/dist/storage/backends/namespace.d.ts +55 -0
  41. package/dist/storage/backends/namespace.d.ts.map +1 -0
  42. package/dist/storage/backends/namespace.js +907 -0
  43. package/dist/storage/backends/namespace.js.map +1 -0
  44. package/dist/storage/file-io.d.ts +38 -0
  45. package/dist/storage/file-io.d.ts.map +1 -0
  46. package/dist/storage/file-io.js +69 -0
  47. package/dist/storage/file-io.js.map +1 -0
  48. package/dist/storage/git-ref.d.ts +77 -0
  49. package/dist/storage/git-ref.d.ts.map +1 -0
  50. package/dist/storage/git-ref.js +184 -0
  51. package/dist/storage/git-ref.js.map +1 -0
  52. package/dist/storage/markdown.d.ts +17 -0
  53. package/dist/storage/markdown.d.ts.map +1 -0
  54. package/dist/storage/markdown.js +17 -0
  55. package/dist/storage/markdown.js.map +1 -0
  56. package/dist/storage/sync-ref.d.ts +82 -0
  57. package/dist/storage/sync-ref.d.ts.map +1 -0
  58. package/dist/storage/sync-ref.js +191 -0
  59. package/dist/storage/sync-ref.js.map +1 -0
  60. package/dist/store.d.ts +56 -8
  61. package/dist/store.d.ts.map +1 -1
  62. package/dist/store.js +93 -115
  63. package/dist/store.js.map +1 -1
  64. package/dist/watcher.d.ts +33 -1
  65. package/dist/watcher.d.ts.map +1 -1
  66. package/dist/watcher.js +12 -30
  67. package/dist/watcher.js.map +1 -1
  68. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../../src/storage/backends/namespace.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import type { OrdnaConfig } from "../config.js";
2
+ import type { SchemaMode } from "../schema.js";
3
+ /**
4
+ * Pure file-IO helpers used by `FileBackend` and (in T-031)
5
+ * `HybridBackend`. Knows nothing about Task semantics — operates on
6
+ * raw bytes and paths only. The Task layer lives in
7
+ * `storage/markdown.ts`.
8
+ */
9
+ export interface TaskFileEntry {
10
+ filePath: string;
11
+ raw: string;
12
+ }
13
+ /** Read every `.md` file under `tasksDir`. Returns empty if dir absent. */
14
+ export declare function listTaskBytes(tasksDir: string): Promise<TaskFileEntry[]>;
15
+ /** Read a single task file's bytes. Throws if missing — caller decides null vs error. */
16
+ export declare function readTaskBytes(filePath: string): Promise<string>;
17
+ /** Write bytes to a task file. Caller ensures the directory exists. */
18
+ export declare function writeTaskBytes(filePath: string, content: string): Promise<void>;
19
+ /** Remove a task file. Throws if it doesn't exist. */
20
+ export declare function deleteTaskFile(filePath: string): Promise<void>;
21
+ /** Idempotent `mkdir -p` for the tasks directory. */
22
+ export declare function ensureTasksDir(tasksDir: string): void;
23
+ /**
24
+ * Compute the filename for a task in the configured schema.
25
+ * - `ordna` schema: `<id>.md` (e.g. `T-001.md`)
26
+ * - `backlog` schema: `task-<n> - <slug>.md` (Backlog.md convention)
27
+ */
28
+ export declare function filenameFor(id: string, title: string, mode: SchemaMode, config: OrdnaConfig): string;
29
+ /**
30
+ * Allocate the next ID by scanning the tasks directory for the highest
31
+ * numeric ID and incrementing. This is the file-backend allocator;
32
+ * hybrid mode replaces this with a git-ref CAS allocator (T-031).
33
+ *
34
+ * Thin re-export of `ids.ts:nextId` so backends have one import surface
35
+ * for storage primitives.
36
+ */
37
+ export declare function nextIdFromScan(config: OrdnaConfig, tasksDir: string): string;
38
+ //# sourceMappingURL=file-io.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-io.d.ts","sourceRoot":"","sources":["../../src/storage/file-io.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C;;;;;GAKG;AAEH,MAAM,WAAW,aAAa;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACZ;AAED,2EAA2E;AAC3E,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAY9E;AAED,yFAAyF;AACzF,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE/D;AAED,uEAAuE;AACvE,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/E;AAED,sDAAsD;AACtD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9D;AAED,qDAAqD;AACrD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAErD;AAUD;;;;GAIG;AACH,wBAAgB,WAAW,CAC1B,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,WAAW,GACjB,MAAM,CAQR;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE5E"}
@@ -0,0 +1,69 @@
1
+ import { existsSync, mkdirSync, readdirSync } from "node:fs";
2
+ import { readFile, unlink, writeFile } from "node:fs/promises";
3
+ import { join } from "node:path";
4
+ import { nextId, parseId } from "../ids.js";
5
+ /** Read every `.md` file under `tasksDir`. Returns empty if dir absent. */
6
+ export async function listTaskBytes(tasksDir) {
7
+ if (!existsSync(tasksDir))
8
+ return [];
9
+ const entries = readdirSync(tasksDir, { withFileTypes: true });
10
+ const out = [];
11
+ for (const entry of entries) {
12
+ if (!entry.isFile() || !entry.name.endsWith(".md"))
13
+ continue;
14
+ const filePath = join(tasksDir, entry.name);
15
+ const raw = await readFile(filePath, "utf8");
16
+ out.push({ filePath, raw });
17
+ }
18
+ return out;
19
+ }
20
+ /** Read a single task file's bytes. Throws if missing — caller decides null vs error. */
21
+ export function readTaskBytes(filePath) {
22
+ return readFile(filePath, "utf8");
23
+ }
24
+ /** Write bytes to a task file. Caller ensures the directory exists. */
25
+ export function writeTaskBytes(filePath, content) {
26
+ return writeFile(filePath, content, "utf8");
27
+ }
28
+ /** Remove a task file. Throws if it doesn't exist. */
29
+ export function deleteTaskFile(filePath) {
30
+ return unlink(filePath);
31
+ }
32
+ /** Idempotent `mkdir -p` for the tasks directory. */
33
+ export function ensureTasksDir(tasksDir) {
34
+ if (!existsSync(tasksDir))
35
+ mkdirSync(tasksDir, { recursive: true });
36
+ }
37
+ function slugifyTitle(title) {
38
+ return title
39
+ .toLowerCase()
40
+ .replace(/[^a-z0-9]+/g, "-")
41
+ .replace(/^-+|-+$/g, "")
42
+ .slice(0, 60);
43
+ }
44
+ /**
45
+ * Compute the filename for a task in the configured schema.
46
+ * - `ordna` schema: `<id>.md` (e.g. `T-001.md`)
47
+ * - `backlog` schema: `task-<n> - <slug>.md` (Backlog.md convention)
48
+ */
49
+ export function filenameFor(id, title, mode, config) {
50
+ if (mode === "backlog") {
51
+ const numeric = parseId(config, id);
52
+ const numericPart = numeric ?? id;
53
+ const slug = slugifyTitle(title) || "task";
54
+ return `task-${numericPart} - ${slug}.md`;
55
+ }
56
+ return `${id}.md`;
57
+ }
58
+ /**
59
+ * Allocate the next ID by scanning the tasks directory for the highest
60
+ * numeric ID and incrementing. This is the file-backend allocator;
61
+ * hybrid mode replaces this with a git-ref CAS allocator (T-031).
62
+ *
63
+ * Thin re-export of `ids.ts:nextId` so backends have one import surface
64
+ * for storage primitives.
65
+ */
66
+ export function nextIdFromScan(config, tasksDir) {
67
+ return nextId(config, tasksDir);
68
+ }
69
+ //# sourceMappingURL=file-io.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-io.js","sourceRoot":"","sources":["../../src/storage/file-io.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAe5C,2EAA2E;AAC3E,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAAgB;IACnD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAC;IAErC,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,MAAM,GAAG,GAAoB,EAAE,CAAC;IAChC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,SAAS;QAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC7C,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,GAAG,CAAC;AACZ,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC7C,OAAO,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACnC,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,cAAc,CAAC,QAAgB,EAAE,OAAe;IAC/D,OAAO,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAC7C,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC9C,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC;AACzB,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC9C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IAClC,OAAO,KAAK;SACV,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAC1B,EAAU,EACV,KAAa,EACb,IAAgB,EAChB,MAAmB;IAEnB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACpC,MAAM,WAAW,GAAG,OAAO,IAAI,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC;QAC3C,OAAO,QAAQ,WAAW,MAAM,IAAI,KAAK,CAAC;IAC3C,CAAC;IACD,OAAO,GAAG,EAAE,KAAK,CAAC;AACnB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,MAAmB,EAAE,QAAgB;IACnE,OAAO,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACjC,CAAC"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Thin async wrapper around the `git` binary. Used by hybrid mode
3
+ * (this task) and namespace mode (T-032).
4
+ *
5
+ * **Why `spawn` and not `execFile`?** `execFile`'s promisified async
6
+ * form silently ignores the `input` option (only `execFileSync` /
7
+ * `spawnSync` honour it). `git hash-object --stdin` then hangs forever
8
+ * waiting for input that never arrives. `spawn` with explicit
9
+ * `proc.stdin.write` is the only async path that actually delivers.
10
+ *
11
+ * Every command runs in `cwd` and returns stdout (utf-8). Errors
12
+ * surface git's stderr in the thrown message so workflow / object
13
+ * errors propagate clearly.
14
+ */
15
+ export declare class GitRunner {
16
+ private readonly cwd;
17
+ constructor(cwd: string);
18
+ /** Run a git command. Optional stdin piped via `proc.stdin`. */
19
+ run(args: string[], stdin?: string | Buffer): Promise<string>;
20
+ /** Verify the cwd is inside a git working tree (or a bare repo). */
21
+ ensureRepository(): Promise<void>;
22
+ /**
23
+ * Check whether the given remote is configured. Defaults to "origin".
24
+ * Used as the gate for auto-push: no remote → all pushes are no-ops.
25
+ */
26
+ hasRemote(name?: string): Promise<boolean>;
27
+ /** Write a blob from a string. Returns the resulting object ID. */
28
+ hashObject(content: string): Promise<string>;
29
+ /** Read a blob's contents as a utf-8 string. */
30
+ catBlob(oid: string): Promise<string>;
31
+ /**
32
+ * List refs matching a pattern. Returns `{refname, oid}` per ref,
33
+ * sorted in git's natural order.
34
+ */
35
+ forEachRef(pattern: string): Promise<Array<{
36
+ refname: string;
37
+ oid: string;
38
+ }>>;
39
+ /**
40
+ * Atomically point `refname` at `newOid`, optionally requiring the
41
+ * ref to currently be at `expectedOld` (compare-and-swap).
42
+ *
43
+ * - `expectedOld === ""` → require the ref to not yet exist
44
+ * - `expectedOld === <oid>` → require the ref to currently equal that oid
45
+ * - `expectedOld === undefined` → unconditional update
46
+ */
47
+ updateRef(refname: string, newOid: string, expectedOld?: string): Promise<void>;
48
+ /** Delete a ref. Same CAS semantics as `updateRef`. */
49
+ deleteRef(refname: string, expectedOld?: string): Promise<void>;
50
+ /** Fetch a single ref from a remote. Soft-fails if no remote / network down. */
51
+ fetchRef(refname: string, remote?: string): Promise<void>;
52
+ /**
53
+ * Fetch a refspec (single ref or wildcard) from a remote. Used by
54
+ * namespace mode to pull `+refs/ordna/tasks/*:refs/ordna/tasks/*` —
55
+ * the same refspec format `pushRef` accepts.
56
+ */
57
+ fetchRefspec(refspec: string, remote?: string): Promise<void>;
58
+ /**
59
+ * Push a refspec to a remote. The refspec can be a single
60
+ * `<src>:<dst>` or a glob `+refs/foo/*:refs/foo/*`.
61
+ */
62
+ pushRef(refspec: string, remote?: string): Promise<void>;
63
+ /**
64
+ * Push a single ref with `--force-with-lease` semantics. CAS at the
65
+ * git protocol level: the remote accepts the push only if its
66
+ * current ref value equals `expectedOld`. Empty string asserts the
67
+ * ref must not exist on the remote yet (used for creates).
68
+ *
69
+ * On a collision the remote rejects the push; the failure surfaces
70
+ * as a thrown Error with the relevant git stderr in the message,
71
+ * which callers parse to drive reconciliation.
72
+ */
73
+ pushRefWithLease(refname: string, newOid: string, expectedOld: string, remote?: string): Promise<void>;
74
+ /** Read the configured user identity for audit-log attribution. */
75
+ userEmail(): Promise<string | null>;
76
+ }
77
+ //# sourceMappingURL=git-ref.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-ref.d.ts","sourceRoot":"","sources":["../../src/storage/git-ref.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AACH,qBAAa,SAAS;IACT,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,MAAM;IAExC,gEAAgE;IAChE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAyC7D,oEAAoE;IAC9D,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAUvC;;;OAGG;IACG,SAAS,CAAC,IAAI,SAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAYlD,mEAAmE;IAC7D,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKlD,gDAAgD;IAC1C,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI3C;;;OAGG;IACG,UAAU,CACf,OAAO,EAAE,MAAM,GACb,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAkBnD;;;;;;;OAOG;IACG,SAAS,CACd,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IAMhB,uDAAuD;IACjD,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMrE,gFAAgF;IAC1E,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjE;;;;OAIG;IACG,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrE;;;OAGG;IACG,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhE;;;;;;;;;OASG;IACG,gBAAgB,CACrB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,MAAM,SAAW,GACf,OAAO,CAAC,IAAI,CAAC;IAWhB,mEAAmE;IAC7D,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CASzC"}
@@ -0,0 +1,184 @@
1
+ import { spawn } from "node:child_process";
2
+ /**
3
+ * Thin async wrapper around the `git` binary. Used by hybrid mode
4
+ * (this task) and namespace mode (T-032).
5
+ *
6
+ * **Why `spawn` and not `execFile`?** `execFile`'s promisified async
7
+ * form silently ignores the `input` option (only `execFileSync` /
8
+ * `spawnSync` honour it). `git hash-object --stdin` then hangs forever
9
+ * waiting for input that never arrives. `spawn` with explicit
10
+ * `proc.stdin.write` is the only async path that actually delivers.
11
+ *
12
+ * Every command runs in `cwd` and returns stdout (utf-8). Errors
13
+ * surface git's stderr in the thrown message so workflow / object
14
+ * errors propagate clearly.
15
+ */
16
+ export class GitRunner {
17
+ cwd;
18
+ constructor(cwd) {
19
+ this.cwd = cwd;
20
+ }
21
+ /** Run a git command. Optional stdin piped via `proc.stdin`. */
22
+ run(args, stdin) {
23
+ return new Promise((resolve, reject) => {
24
+ const proc = spawn("git", args, { cwd: this.cwd });
25
+ let stdout = "";
26
+ let stderr = "";
27
+ proc.stdout.on("data", (chunk) => {
28
+ stdout += chunk.toString("utf8");
29
+ });
30
+ proc.stderr.on("data", (chunk) => {
31
+ stderr += chunk.toString("utf8");
32
+ });
33
+ proc.on("error", (err) => {
34
+ const e = err;
35
+ if (e.code === "ENOENT") {
36
+ reject(new Error("ordna: `git` binary not found on PATH. Install git to use hybrid or namespace storage."));
37
+ return;
38
+ }
39
+ reject(err);
40
+ });
41
+ proc.on("close", (code) => {
42
+ if (code === 0) {
43
+ resolve(stdout);
44
+ }
45
+ else {
46
+ reject(new Error(`git ${args.join(" ")} failed (${code}): ${stderr.trim() || "(no stderr)"}`));
47
+ }
48
+ });
49
+ if (stdin !== undefined) {
50
+ proc.stdin.write(stdin);
51
+ }
52
+ proc.stdin.end();
53
+ });
54
+ }
55
+ /** Verify the cwd is inside a git working tree (or a bare repo). */
56
+ async ensureRepository() {
57
+ try {
58
+ await this.run(["rev-parse", "--git-dir"]);
59
+ }
60
+ catch {
61
+ throw new Error(`ordna: ${this.cwd} is not a git repository. Run \`git init\` first or switch back to \`storage: file\`.`);
62
+ }
63
+ }
64
+ /**
65
+ * Check whether the given remote is configured. Defaults to "origin".
66
+ * Used as the gate for auto-push: no remote → all pushes are no-ops.
67
+ */
68
+ async hasRemote(name = "origin") {
69
+ try {
70
+ const out = await this.run(["remote"]);
71
+ return out
72
+ .split("\n")
73
+ .map((line) => line.trim())
74
+ .includes(name);
75
+ }
76
+ catch {
77
+ return false;
78
+ }
79
+ }
80
+ /** Write a blob from a string. Returns the resulting object ID. */
81
+ async hashObject(content) {
82
+ const out = await this.run(["hash-object", "-w", "--stdin"], content);
83
+ return out.trim();
84
+ }
85
+ /** Read a blob's contents as a utf-8 string. */
86
+ async catBlob(oid) {
87
+ return this.run(["cat-file", "blob", oid]);
88
+ }
89
+ /**
90
+ * List refs matching a pattern. Returns `{refname, oid}` per ref,
91
+ * sorted in git's natural order.
92
+ */
93
+ async forEachRef(pattern) {
94
+ const out = await this.run([
95
+ "for-each-ref",
96
+ "--format=%(objectname) %(refname)",
97
+ pattern,
98
+ ]);
99
+ const lines = out.split("\n").filter((l) => l.length > 0);
100
+ const result = [];
101
+ for (const line of lines) {
102
+ const space = line.indexOf(" ");
103
+ if (space <= 0)
104
+ continue;
105
+ const oid = line.slice(0, space);
106
+ const refname = line.slice(space + 1);
107
+ if (oid && refname)
108
+ result.push({ refname, oid });
109
+ }
110
+ return result;
111
+ }
112
+ /**
113
+ * Atomically point `refname` at `newOid`, optionally requiring the
114
+ * ref to currently be at `expectedOld` (compare-and-swap).
115
+ *
116
+ * - `expectedOld === ""` → require the ref to not yet exist
117
+ * - `expectedOld === <oid>` → require the ref to currently equal that oid
118
+ * - `expectedOld === undefined` → unconditional update
119
+ */
120
+ async updateRef(refname, newOid, expectedOld) {
121
+ const args = ["update-ref", refname, newOid];
122
+ if (expectedOld !== undefined)
123
+ args.push(expectedOld);
124
+ await this.run(args);
125
+ }
126
+ /** Delete a ref. Same CAS semantics as `updateRef`. */
127
+ async deleteRef(refname, expectedOld) {
128
+ const args = ["update-ref", "-d", refname];
129
+ if (expectedOld !== undefined)
130
+ args.push(expectedOld);
131
+ await this.run(args);
132
+ }
133
+ /** Fetch a single ref from a remote. Soft-fails if no remote / network down. */
134
+ async fetchRef(refname, remote = "origin") {
135
+ await this.run(["fetch", remote, `+${refname}:${refname}`]);
136
+ }
137
+ /**
138
+ * Fetch a refspec (single ref or wildcard) from a remote. Used by
139
+ * namespace mode to pull `+refs/ordna/tasks/*:refs/ordna/tasks/*` —
140
+ * the same refspec format `pushRef` accepts.
141
+ */
142
+ async fetchRefspec(refspec, remote = "origin") {
143
+ await this.run(["fetch", remote, refspec]);
144
+ }
145
+ /**
146
+ * Push a refspec to a remote. The refspec can be a single
147
+ * `<src>:<dst>` or a glob `+refs/foo/*:refs/foo/*`.
148
+ */
149
+ async pushRef(refspec, remote = "origin") {
150
+ await this.run(["push", remote, refspec]);
151
+ }
152
+ /**
153
+ * Push a single ref with `--force-with-lease` semantics. CAS at the
154
+ * git protocol level: the remote accepts the push only if its
155
+ * current ref value equals `expectedOld`. Empty string asserts the
156
+ * ref must not exist on the remote yet (used for creates).
157
+ *
158
+ * On a collision the remote rejects the push; the failure surfaces
159
+ * as a thrown Error with the relevant git stderr in the message,
160
+ * which callers parse to drive reconciliation.
161
+ */
162
+ async pushRefWithLease(refname, newOid, expectedOld, remote = "origin") {
163
+ // --force-with-lease=<ref>:<expected> + a plain (non-+) refspec.
164
+ // The lease is the CAS predicate; the refspec is the actual push.
165
+ await this.run([
166
+ "push",
167
+ `--force-with-lease=${refname}:${expectedOld}`,
168
+ remote,
169
+ `${refname}:${refname}`,
170
+ ]);
171
+ }
172
+ /** Read the configured user identity for audit-log attribution. */
173
+ async userEmail() {
174
+ try {
175
+ const out = await this.run(["config", "user.email"]);
176
+ const trimmed = out.trim();
177
+ return trimmed.length > 0 ? trimmed : null;
178
+ }
179
+ catch {
180
+ return null;
181
+ }
182
+ }
183
+ }
184
+ //# sourceMappingURL=git-ref.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-ref.js","sourceRoot":"","sources":["../../src/storage/git-ref.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Markdown primitives used by all storage backends.
3
+ *
4
+ * Thin re-export layer over `parser.ts` and `writer.ts` so future
5
+ * backends (hybrid, namespace) have one import surface for "turn task
6
+ * bytes into a Task" and "turn a Task into bytes." The underlying
7
+ * `parser.ts` / `writer.ts` modules stay where they are for back-compat
8
+ * with anything that imports them directly.
9
+ *
10
+ * The `parseTask` function is also re-exported under the more
11
+ * descriptive name `parseTaskBytes` — at the storage seam, callers are
12
+ * working with raw bytes (from disk, from a git blob) rather than
13
+ * "task files," so the name reflects the boundary.
14
+ */
15
+ export { parseTask as parseTaskBytes, parseTask, parseTaskFile, } from "../parser.js";
16
+ export { defaultSectionsFor, serializeTask } from "../writer.js";
17
+ //# sourceMappingURL=markdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/storage/markdown.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EACN,SAAS,IAAI,cAAc,EAC3B,SAAS,EACT,aAAa,GACb,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Markdown primitives used by all storage backends.
3
+ *
4
+ * Thin re-export layer over `parser.ts` and `writer.ts` so future
5
+ * backends (hybrid, namespace) have one import surface for "turn task
6
+ * bytes into a Task" and "turn a Task into bytes." The underlying
7
+ * `parser.ts` / `writer.ts` modules stay where they are for back-compat
8
+ * with anything that imports them directly.
9
+ *
10
+ * The `parseTask` function is also re-exported under the more
11
+ * descriptive name `parseTaskBytes` — at the storage seam, callers are
12
+ * working with raw bytes (from disk, from a git blob) rather than
13
+ * "task files," so the name reflects the boundary.
14
+ */
15
+ export { parseTask as parseTaskBytes, parseTask, parseTaskFile, } from "../parser.js";
16
+ export { defaultSectionsFor, serializeTask } from "../writer.js";
17
+ //# sourceMappingURL=markdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/storage/markdown.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EACN,SAAS,IAAI,cAAc,EAC3B,SAAS,EACT,aAAa,GACb,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,82 @@
1
+ import type { OrdnaConfig } from "../config.js";
2
+ import type { GitRunner } from "./git-ref.js";
3
+ /**
4
+ * Shape of the JSON blob stored at the sync ref. One blob holds both
5
+ * the allocator high-water mark (next_id) and an append-only audit
6
+ * log of operations. Single blob = single CAS write per mutation.
7
+ */
8
+ export interface SyncState {
9
+ /**
10
+ * Next numeric id to allocate. 1-based; an `allocateNextId` call
11
+ * returns the formatted id for the current value, then bumps to
12
+ * `current + 1`.
13
+ */
14
+ next_id: number;
15
+ /**
16
+ * Append-only log of operations. Newer entries land at the end.
17
+ * Schema is intentionally minimal in v1; a follow-up task adds
18
+ * op-specific fields (from/to for moves, changed-fields for updates,
19
+ * etc.). Existing entries with fewer fields are forward-compatible.
20
+ */
21
+ ops: Op[];
22
+ }
23
+ export interface Op {
24
+ /** ISO-8601 UTC timestamp. */
25
+ ts: string;
26
+ /** Resolved from `git config user.email` with `ORDNA_ACTOR` env fallback, else `"unknown"`. */
27
+ actor: string;
28
+ op: "create" | "update" | "move" | "archive" | "delete" | "rename";
29
+ id: string;
30
+ /**
31
+ * Present on `rename` ops only: the previous ID before namespace
32
+ * auto-renumber resolved a push-collision. Powers the
33
+ * "previously known as X" banner in the UIs. Existing parsers tolerate
34
+ * the extra field — the JSON shape is forward-compatible.
35
+ */
36
+ renamedFrom?: string;
37
+ }
38
+ /**
39
+ * Wraps a single git ref carrying a JSON `SyncState` blob.
40
+ *
41
+ * The CAS pattern: every write reads the current blob, computes the
42
+ * new state, hashes the new blob, and `update-ref`s with the old OID
43
+ * as the expected-old value. If the ref has moved underneath us
44
+ * (another writer slipped in), the CAS fails non-fast-forward and we
45
+ * fetch + retry once. Beyond that, we surface a clear "diverged"
46
+ * error so the user can intervene.
47
+ *
48
+ * Reads are cached in memory until invalidated (after a CAS conflict)
49
+ * or after a successful write (cache is updated to the new state).
50
+ */
51
+ export declare class SyncRef {
52
+ #private;
53
+ private readonly git;
54
+ readonly refname: string;
55
+ constructor(git: GitRunner, refname?: string);
56
+ /**
57
+ * Read the current state. Returns an empty state if the ref
58
+ * doesn't yet exist. Hits the cache when available.
59
+ */
60
+ read(): Promise<SyncState>;
61
+ /** Drop the cache. Next `read()` hits the ref again. */
62
+ invalidate(): void;
63
+ /**
64
+ * Seed the ref with `initial` only if it doesn't yet exist. Used by
65
+ * namespace mode to migrate pre-state-ref repos: scan existing
66
+ * `refs/ordna/tasks/*` for the max id, then call this with
67
+ * `{ next_id: max + 1, ops: [] }`. Safe to call concurrently — if
68
+ * another process initialises first, we just adopt its value.
69
+ */
70
+ ensureInitialized(initial: SyncState): Promise<void>;
71
+ /**
72
+ * Allocate the next id, bump the counter, and persist atomically.
73
+ * Returns the formatted id (e.g. `T-007`) for the caller.
74
+ *
75
+ * On CAS conflict, fetches the ref from origin (if any) and
76
+ * retries once. Further conflicts throw a clear error.
77
+ */
78
+ allocateNextId(config: OrdnaConfig): Promise<string>;
79
+ /** Append a single op to the audit log and persist atomically. */
80
+ appendOp(op: Op): Promise<void>;
81
+ }
82
+ //# sourceMappingURL=sync-ref.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-ref.d.ts","sourceRoot":"","sources":["../../src/storage/sync-ref.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACzB;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,GAAG,EAAE,EAAE,EAAE,CAAC;CACV;AAED,MAAM,WAAW,EAAE;IAClB,8BAA8B;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,+FAA+F;IAC/F,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACnE,EAAE,EAAE,MAAM,CAAC;IACX;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAOD;;;;;;;;;;;;GAYG;AACH,qBAAa,OAAO;;IAIlB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM;gBADP,GAAG,EAAE,SAAS,EACtB,OAAO,GAAE,MAAoB;IAGvC;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,SAAS,CAAC;IAOhC,wDAAwD;IACxD,UAAU,IAAI,IAAI;IAIlB;;;;;;OAMG;IACG,iBAAiB,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IA6C1D;;;;;;OAMG;IACG,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAa1D,kEAAkE;IAC5D,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CA6DrC"}