@shardworks/codexes-apparatus 0.1.101

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/LICENSE +15 -0
  2. package/README.md +278 -0
  3. package/dist/git.d.ts +39 -0
  4. package/dist/git.d.ts.map +1 -0
  5. package/dist/git.js +66 -0
  6. package/dist/git.js.map +1 -0
  7. package/dist/index.d.ts +14 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +15 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/scriptorium-core.d.ts +68 -0
  12. package/dist/scriptorium-core.d.ts.map +1 -0
  13. package/dist/scriptorium-core.js +488 -0
  14. package/dist/scriptorium-core.js.map +1 -0
  15. package/dist/scriptorium.d.ts +12 -0
  16. package/dist/scriptorium.d.ts.map +1 -0
  17. package/dist/scriptorium.js +41 -0
  18. package/dist/scriptorium.js.map +1 -0
  19. package/dist/tools/codex-add.d.ts +13 -0
  20. package/dist/tools/codex-add.d.ts.map +1 -0
  21. package/dist/tools/codex-add.js +23 -0
  22. package/dist/tools/codex-add.js.map +1 -0
  23. package/dist/tools/codex-list.d.ts +6 -0
  24. package/dist/tools/codex-list.d.ts.map +1 -0
  25. package/dist/tools/codex-list.js +17 -0
  26. package/dist/tools/codex-list.js.map +1 -0
  27. package/dist/tools/codex-push.d.ts +10 -0
  28. package/dist/tools/codex-push.d.ts.map +1 -0
  29. package/dist/tools/codex-push.js +20 -0
  30. package/dist/tools/codex-push.js.map +1 -0
  31. package/dist/tools/codex-remove.d.ts +12 -0
  32. package/dist/tools/codex-remove.d.ts.map +1 -0
  33. package/dist/tools/codex-remove.js +22 -0
  34. package/dist/tools/codex-remove.js.map +1 -0
  35. package/dist/tools/codex-show.d.ts +9 -0
  36. package/dist/tools/codex-show.d.ts.map +1 -0
  37. package/dist/tools/codex-show.js +19 -0
  38. package/dist/tools/codex-show.js.map +1 -0
  39. package/dist/tools/draft-abandon.d.ts +14 -0
  40. package/dist/tools/draft-abandon.d.ts.map +1 -0
  41. package/dist/tools/draft-abandon.js +24 -0
  42. package/dist/tools/draft-abandon.js.map +1 -0
  43. package/dist/tools/draft-list.d.ts +9 -0
  44. package/dist/tools/draft-list.d.ts.map +1 -0
  45. package/dist/tools/draft-list.js +19 -0
  46. package/dist/tools/draft-list.js.map +1 -0
  47. package/dist/tools/draft-open.d.ts +15 -0
  48. package/dist/tools/draft-open.d.ts.map +1 -0
  49. package/dist/tools/draft-open.js +25 -0
  50. package/dist/tools/draft-open.js.map +1 -0
  51. package/dist/tools/draft-seal.d.ts +17 -0
  52. package/dist/tools/draft-seal.d.ts.map +1 -0
  53. package/dist/tools/draft-seal.js +27 -0
  54. package/dist/tools/draft-seal.js.map +1 -0
  55. package/dist/tools/index.d.ts +13 -0
  56. package/dist/tools/index.d.ts.map +1 -0
  57. package/dist/tools/index.js +13 -0
  58. package/dist/tools/index.js.map +1 -0
  59. package/dist/types.d.ts +180 -0
  60. package/dist/types.d.ts.map +1 -0
  61. package/dist/types.js +11 -0
  62. package/dist/types.js.map +1 -0
  63. package/package.json +34 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-list.js","sourceRoot":"","sources":["../../src/tools/codex-list.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAe,IAAI,CAAC;IAClB,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,4CAA4C;IACzD,UAAU,EAAE,MAAM;IAClB,MAAM,EAAE,EAAE;IACV,OAAO,EAAE,KAAK,IAAI,EAAE;QAClB,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC,SAAS,CAAiB,SAAS,CAAC,CAAC;QACzD,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * codex-push tool — push a branch to the codex's remote.
3
+ */
4
+ import { z } from 'zod';
5
+ declare const _default: import("@shardworks/tools-apparatus").ToolDefinition<{
6
+ codexName: z.ZodString;
7
+ branch: z.ZodOptional<z.ZodString>;
8
+ }>;
9
+ export default _default;
10
+ //# sourceMappingURL=codex-push.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-push.d.ts","sourceRoot":"","sources":["../../src/tools/codex-push.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;;;;;AAGxB,wBAYG"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * codex-push tool — push a branch to the codex's remote.
3
+ */
4
+ import { tool } from '@shardworks/tools-apparatus';
5
+ import { guild } from '@shardworks/nexus-core';
6
+ import { z } from 'zod';
7
+ export default tool({
8
+ name: 'codex-push',
9
+ description: 'Push a branch to the codex remote',
10
+ permission: 'write',
11
+ params: {
12
+ codexName: z.string().describe('Codex name'),
13
+ branch: z.string().optional().describe('Branch to push (default: codex default branch)'),
14
+ },
15
+ handler: async (params) => {
16
+ const api = guild().apparatus('codexes');
17
+ return api.push(params);
18
+ },
19
+ });
20
+ //# sourceMappingURL=codex-push.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-push.js","sourceRoot":"","sources":["../../src/tools/codex-push.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAe,IAAI,CAAC;IAClB,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,mCAAmC;IAChD,UAAU,EAAE,OAAO;IACnB,MAAM,EAAE;QACN,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC5C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;KACzF;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACxB,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC,SAAS,CAAiB,SAAS,CAAC,CAAC;QACzD,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * codex-remove tool — remove a codex from the guild.
3
+ *
4
+ * Abandons all active drafts, removes the bare clone, and removes
5
+ * the entry from guild.json. Does NOT delete the remote repository.
6
+ */
7
+ import { z } from 'zod';
8
+ declare const _default: import("@shardworks/tools-apparatus").ToolDefinition<{
9
+ name: z.ZodString;
10
+ }>;
11
+ export default _default;
12
+ //# sourceMappingURL=codex-remove.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-remove.d.ts","sourceRoot":"","sources":["../../src/tools/codex-remove.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;;;;AAGxB,wBAWG"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * codex-remove tool — remove a codex from the guild.
3
+ *
4
+ * Abandons all active drafts, removes the bare clone, and removes
5
+ * the entry from guild.json. Does NOT delete the remote repository.
6
+ */
7
+ import { tool } from '@shardworks/tools-apparatus';
8
+ import { guild } from '@shardworks/nexus-core';
9
+ import { z } from 'zod';
10
+ export default tool({
11
+ name: 'codex-remove',
12
+ description: 'Remove a codex from the guild (does not affect the remote repository)',
13
+ permission: 'delete',
14
+ params: {
15
+ name: z.string().describe('Codex name to remove'),
16
+ },
17
+ handler: async ({ name }) => {
18
+ const api = guild().apparatus('codexes');
19
+ return api.remove(name);
20
+ },
21
+ });
22
+ //# sourceMappingURL=codex-remove.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-remove.js","sourceRoot":"","sources":["../../src/tools/codex-remove.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAe,IAAI,CAAC;IAClB,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,uEAAuE;IACpF,UAAU,EAAE,QAAQ;IACpB,MAAM,EAAE;QACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;KAClD;IACD,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QAC1B,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC,SAAS,CAAiB,SAAS,CAAC,CAAC;QACzD,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * codex-show tool — show details of a specific codex including active drafts.
3
+ */
4
+ import { z } from 'zod';
5
+ declare const _default: import("@shardworks/tools-apparatus").ToolDefinition<{
6
+ name: z.ZodString;
7
+ }>;
8
+ export default _default;
9
+ //# sourceMappingURL=codex-show.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-show.d.ts","sourceRoot":"","sources":["../../src/tools/codex-show.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;;;;AAGxB,wBAWG"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * codex-show tool — show details of a specific codex including active drafts.
3
+ */
4
+ import { tool } from '@shardworks/tools-apparatus';
5
+ import { guild } from '@shardworks/nexus-core';
6
+ import { z } from 'zod';
7
+ export default tool({
8
+ name: 'codex-show',
9
+ description: 'Show details of a registered codex including active draft bindings',
10
+ permission: 'read',
11
+ params: {
12
+ name: z.string().describe('Codex name'),
13
+ },
14
+ handler: async ({ name }) => {
15
+ const api = guild().apparatus('codexes');
16
+ return api.show(name);
17
+ },
18
+ });
19
+ //# sourceMappingURL=codex-show.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-show.js","sourceRoot":"","sources":["../../src/tools/codex-show.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAe,IAAI,CAAC;IAClB,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,oEAAoE;IACjF,UAAU,EAAE,MAAM;IAClB,MAAM,EAAE;QACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;KACxC;IACD,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QAC1B,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC,SAAS,CAAiB,SAAS,CAAC,CAAC;QACzD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * draft-abandon tool — abandon a draft binding.
3
+ *
4
+ * Removes the git worktree and branch. Fails if the draft has
5
+ * unsealed inscriptions unless force: true.
6
+ */
7
+ import { z } from 'zod';
8
+ declare const _default: import("@shardworks/tools-apparatus").ToolDefinition<{
9
+ codexName: z.ZodString;
10
+ branch: z.ZodString;
11
+ force: z.ZodOptional<z.ZodBoolean>;
12
+ }>;
13
+ export default _default;
14
+ //# sourceMappingURL=draft-abandon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draft-abandon.d.ts","sourceRoot":"","sources":["../../src/tools/draft-abandon.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;;;;;;AAGxB,wBAaG"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * draft-abandon tool — abandon a draft binding.
3
+ *
4
+ * Removes the git worktree and branch. Fails if the draft has
5
+ * unsealed inscriptions unless force: true.
6
+ */
7
+ import { tool } from '@shardworks/tools-apparatus';
8
+ import { guild } from '@shardworks/nexus-core';
9
+ import { z } from 'zod';
10
+ export default tool({
11
+ name: 'draft-abandon',
12
+ description: 'Abandon a draft binding (removes the git worktree and branch)',
13
+ permission: 'delete',
14
+ params: {
15
+ codexName: z.string().describe('Codex name'),
16
+ branch: z.string().describe('Branch of the draft to abandon'),
17
+ force: z.boolean().optional().describe('Force abandonment even with unmerged changes'),
18
+ },
19
+ handler: async (params) => {
20
+ const api = guild().apparatus('codexes');
21
+ return api.abandonDraft(params);
22
+ },
23
+ });
24
+ //# sourceMappingURL=draft-abandon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draft-abandon.js","sourceRoot":"","sources":["../../src/tools/draft-abandon.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAe,IAAI,CAAC;IAClB,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,+DAA+D;IAC5E,UAAU,EAAE,QAAQ;IACpB,MAAM,EAAE;QACN,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC5C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QAC7D,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;KACvF;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACxB,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC,SAAS,CAAiB,SAAS,CAAC,CAAC;QACzD,OAAO,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * draft-list tool — list active draft bindings.
3
+ */
4
+ import { z } from 'zod';
5
+ declare const _default: import("@shardworks/tools-apparatus").ToolDefinition<{
6
+ codexName: z.ZodOptional<z.ZodString>;
7
+ }>;
8
+ export default _default;
9
+ //# sourceMappingURL=draft-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draft-list.d.ts","sourceRoot":"","sources":["../../src/tools/draft-list.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;;;;AAGxB,wBAWG"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * draft-list tool — list active draft bindings.
3
+ */
4
+ import { tool } from '@shardworks/tools-apparatus';
5
+ import { guild } from '@shardworks/nexus-core';
6
+ import { z } from 'zod';
7
+ export default tool({
8
+ name: 'draft-list',
9
+ description: 'List active draft bindings, optionally filtered by codex',
10
+ permission: 'read',
11
+ params: {
12
+ codexName: z.string().optional().describe('Filter by codex name'),
13
+ },
14
+ handler: async ({ codexName }) => {
15
+ const api = guild().apparatus('codexes');
16
+ return api.listDrafts(codexName);
17
+ },
18
+ });
19
+ //# sourceMappingURL=draft-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draft-list.js","sourceRoot":"","sources":["../../src/tools/draft-list.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAe,IAAI,CAAC;IAClB,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,0DAA0D;IACvE,UAAU,EAAE,MAAM;IAClB,MAAM,EAAE;QACN,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;KAClE;IACD,OAAO,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QAC/B,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC,SAAS,CAAiB,SAAS,CAAC,CAAC;QACzD,OAAO,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * draft-open tool — open a draft binding on a codex.
3
+ *
4
+ * Creates an isolated git worktree for concurrent work. Fetches from
5
+ * the remote before branching to ensure freshness.
6
+ */
7
+ import { z } from 'zod';
8
+ declare const _default: import("@shardworks/tools-apparatus").ToolDefinition<{
9
+ codexName: z.ZodString;
10
+ branch: z.ZodOptional<z.ZodString>;
11
+ startPoint: z.ZodOptional<z.ZodString>;
12
+ associatedWith: z.ZodOptional<z.ZodString>;
13
+ }>;
14
+ export default _default;
15
+ //# sourceMappingURL=draft-open.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draft-open.d.ts","sourceRoot":"","sources":["../../src/tools/draft-open.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;;;;;;;AAGxB,wBAcG"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * draft-open tool — open a draft binding on a codex.
3
+ *
4
+ * Creates an isolated git worktree for concurrent work. Fetches from
5
+ * the remote before branching to ensure freshness.
6
+ */
7
+ import { tool } from '@shardworks/tools-apparatus';
8
+ import { guild } from '@shardworks/nexus-core';
9
+ import { z } from 'zod';
10
+ export default tool({
11
+ name: 'draft-open',
12
+ description: 'Open a draft binding on a codex (creates an isolated git worktree)',
13
+ permission: 'write',
14
+ params: {
15
+ codexName: z.string().describe('Codex to open the draft for'),
16
+ branch: z.string().optional().describe('Branch name for the draft (default: auto-generated draft-<ulid>)'),
17
+ startPoint: z.string().optional().describe('Branch/tag/commit to start from (default: remote HEAD)'),
18
+ associatedWith: z.string().optional().describe('Optional association (e.g. writ id)'),
19
+ },
20
+ handler: async (params) => {
21
+ const api = guild().apparatus('codexes');
22
+ return api.openDraft(params);
23
+ },
24
+ });
25
+ //# sourceMappingURL=draft-open.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draft-open.js","sourceRoot":"","sources":["../../src/tools/draft-open.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAe,IAAI,CAAC;IAClB,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,oEAAoE;IACjF,UAAU,EAAE,OAAO;IACnB,MAAM,EAAE;QACN,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;QAC7D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kEAAkE,CAAC;QAC1G,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;QACpG,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;KACtF;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACxB,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC,SAAS,CAAiB,SAAS,CAAC,CAAC;QACzD,OAAO,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * draft-seal tool — seal a draft into the codex.
3
+ *
4
+ * Incorporates the draft's inscriptions into the sealed binding via
5
+ * ff-only merge. If ff is not possible, rebases and retries. Fails
6
+ * hard on conflicts — no merge commits, no auto-resolution.
7
+ */
8
+ import { z } from 'zod';
9
+ declare const _default: import("@shardworks/tools-apparatus").ToolDefinition<{
10
+ codexName: z.ZodString;
11
+ sourceBranch: z.ZodString;
12
+ targetBranch: z.ZodOptional<z.ZodString>;
13
+ maxRetries: z.ZodOptional<z.ZodNumber>;
14
+ keepDraft: z.ZodOptional<z.ZodBoolean>;
15
+ }>;
16
+ export default _default;
17
+ //# sourceMappingURL=draft-seal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draft-seal.d.ts","sourceRoot":"","sources":["../../src/tools/draft-seal.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;;;;;;;;AAGxB,wBAeG"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * draft-seal tool — seal a draft into the codex.
3
+ *
4
+ * Incorporates the draft's inscriptions into the sealed binding via
5
+ * ff-only merge. If ff is not possible, rebases and retries. Fails
6
+ * hard on conflicts — no merge commits, no auto-resolution.
7
+ */
8
+ import { tool } from '@shardworks/tools-apparatus';
9
+ import { guild } from '@shardworks/nexus-core';
10
+ import { z } from 'zod';
11
+ export default tool({
12
+ name: 'draft-seal',
13
+ description: 'Seal a draft binding into the codex (ff-only merge or rebase; no merge commits)',
14
+ permission: 'write',
15
+ params: {
16
+ codexName: z.string().describe('Codex name'),
17
+ sourceBranch: z.string().describe('Draft branch to seal'),
18
+ targetBranch: z.string().optional().describe('Target branch (default: codex default branch)'),
19
+ maxRetries: z.number().optional().describe('Max rebase retries under contention (default: 3)'),
20
+ keepDraft: z.boolean().optional().describe('Keep draft after sealing (default: false)'),
21
+ },
22
+ handler: async (params) => {
23
+ const api = guild().apparatus('codexes');
24
+ return api.seal(params);
25
+ },
26
+ });
27
+ //# sourceMappingURL=draft-seal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draft-seal.js","sourceRoot":"","sources":["../../src/tools/draft-seal.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAe,IAAI,CAAC;IAClB,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,iFAAiF;IAC9F,UAAU,EAAE,OAAO;IACnB,MAAM,EAAE;QACN,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC5C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACzD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;QAC7F,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;QAC9F,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;KACxF;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACxB,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC,SAAS,CAAiB,SAAS,CAAC,CAAC;QACzD,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Scriptorium tool re-exports.
3
+ */
4
+ export { default as codexAdd } from './codex-add.ts';
5
+ export { default as codexList } from './codex-list.ts';
6
+ export { default as codexShow } from './codex-show.ts';
7
+ export { default as codexRemove } from './codex-remove.ts';
8
+ export { default as codexPush } from './codex-push.ts';
9
+ export { default as draftOpen } from './draft-open.ts';
10
+ export { default as draftList } from './draft-list.ts';
11
+ export { default as draftAbandon } from './draft-abandon.ts';
12
+ export { default as draftSeal } from './draft-seal.ts';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Scriptorium tool re-exports.
3
+ */
4
+ export { default as codexAdd } from "./codex-add.js";
5
+ export { default as codexList } from "./codex-list.js";
6
+ export { default as codexShow } from "./codex-show.js";
7
+ export { default as codexRemove } from "./codex-remove.js";
8
+ export { default as codexPush } from "./codex-push.js";
9
+ export { default as draftOpen } from "./draft-open.js";
10
+ export { default as draftList } from "./draft-list.js";
11
+ export { default as draftAbandon } from "./draft-abandon.js";
12
+ export { default as draftSeal } from "./draft-seal.js";
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,180 @@
1
+ /**
2
+ * The Scriptorium — type definitions.
3
+ *
4
+ * All public types for the codexes apparatus: the ScriptoriumApi
5
+ * (provides interface), supporting record types, and request/result
6
+ * types for draft lifecycle and sealing operations.
7
+ *
8
+ * See: docs/architecture/apparatus/scriptorium.md
9
+ */
10
+ export interface CodexRecord {
11
+ /** Codex name — unique within the guild. */
12
+ name: string;
13
+ /** Remote repository URL. */
14
+ remoteUrl: string;
15
+ /** Whether the bare clone exists and is healthy. */
16
+ cloneStatus: 'ready' | 'cloning' | 'error';
17
+ /** Number of active drafts for this codex. */
18
+ activeDrafts: number;
19
+ }
20
+ export interface CodexDetail extends CodexRecord {
21
+ /** Default branch name on the remote (e.g. 'main'). */
22
+ defaultBranch: string;
23
+ /** Timestamp of last fetch. */
24
+ lastFetched: string | null;
25
+ /** Active drafts for this codex. */
26
+ drafts: DraftRecord[];
27
+ }
28
+ export interface DraftRecord {
29
+ /** Unique draft id (ULID). */
30
+ id: string;
31
+ /** Codex this draft belongs to. */
32
+ codexName: string;
33
+ /** Git branch name for this draft. */
34
+ branch: string;
35
+ /** Absolute filesystem path to the draft's working directory (git worktree). */
36
+ path: string;
37
+ /** When the draft was opened. */
38
+ createdAt: string;
39
+ /** Optional association — e.g. a writ id. */
40
+ associatedWith?: string;
41
+ }
42
+ export interface OpenDraftRequest {
43
+ /** Codex to open the draft for. */
44
+ codexName: string;
45
+ /** Branch name for the draft. If omitted, generates `draft-<ulid>`. */
46
+ branch?: string;
47
+ /**
48
+ * Starting point — branch, tag, or commit to branch from.
49
+ * Default: remote HEAD (the codex's default branch).
50
+ */
51
+ startPoint?: string;
52
+ /** Optional association metadata (e.g. writ id). */
53
+ associatedWith?: string;
54
+ }
55
+ export interface AbandonDraftRequest {
56
+ /** Codex name. */
57
+ codexName: string;
58
+ /** Git branch name of the draft to abandon. */
59
+ branch: string;
60
+ /** Force abandonment even if the draft has unsealed inscriptions. */
61
+ force?: boolean;
62
+ }
63
+ export interface SealRequest {
64
+ /** Codex name. */
65
+ codexName: string;
66
+ /** Git branch to seal (the draft's branch). */
67
+ sourceBranch: string;
68
+ /** Target branch (the sealed binding). Default: codex's default branch. */
69
+ targetBranch?: string;
70
+ /** Max rebase retry attempts under contention. Default: from settings.maxMergeRetries (3). */
71
+ maxRetries?: number;
72
+ /** Keep the draft after successful sealing. Default: false. */
73
+ keepDraft?: boolean;
74
+ }
75
+ export interface SealResult {
76
+ /** Whether sealing succeeded. */
77
+ success: boolean;
78
+ /** Strategy used: 'fast-forward' or 'rebase'. */
79
+ strategy: 'fast-forward' | 'rebase';
80
+ /** Number of retry attempts needed (0 = first try). */
81
+ retries: number;
82
+ /** The commit SHA at head of target after sealing. */
83
+ sealedCommit: string;
84
+ /** Number of inscriptions (commits) incorporated from the draft. 0 means no-op seal. */
85
+ inscriptionsSealed: number;
86
+ }
87
+ export interface PushRequest {
88
+ /** Codex name. */
89
+ codexName: string;
90
+ /**
91
+ * Branch to push. Default: codex's default branch.
92
+ */
93
+ branch?: string;
94
+ }
95
+ export interface CodexesConfig {
96
+ settings?: CodexesSettings;
97
+ registered?: Record<string, CodexConfigEntry>;
98
+ }
99
+ export interface CodexesSettings {
100
+ /** Max rebase-retry attempts during sealing under contention. Default: 3. */
101
+ maxMergeRetries?: number;
102
+ /** Directory where draft worktrees are created, relative to guild root. Default: '.nexus/worktrees'. */
103
+ draftRoot?: string;
104
+ }
105
+ export interface CodexConfigEntry {
106
+ /** The remote URL of the codex's git repository. */
107
+ remoteUrl: string;
108
+ }
109
+ export interface ScriptoriumApi {
110
+ /**
111
+ * Register an existing repository as a codex.
112
+ * Clones a bare copy to `.nexus/codexes/<name>.git` and adds the
113
+ * entry to the `codexes` config section in `guild.json`.
114
+ * Blocks until the clone completes.
115
+ */
116
+ add(name: string, remoteUrl: string): Promise<CodexRecord>;
117
+ /**
118
+ * List all registered codexes with their status.
119
+ */
120
+ list(): Promise<CodexRecord[]>;
121
+ /**
122
+ * Show details for a single codex, including active drafts.
123
+ */
124
+ show(name: string): Promise<CodexDetail>;
125
+ /**
126
+ * Remove a codex from the guild. Abandons all active drafts,
127
+ * removes the bare clone from `.nexus/codexes/`, and removes the
128
+ * entry from `guild.json`. Does NOT delete the remote repository.
129
+ */
130
+ remove(name: string): Promise<void>;
131
+ /**
132
+ * Fetch latest refs from the remote for a codex's bare clone.
133
+ * Called automatically before draft creation and sealing; can
134
+ * also be invoked manually.
135
+ */
136
+ fetch(name: string): Promise<void>;
137
+ /**
138
+ * Push a branch to the codex's remote.
139
+ * Pushes the specified branch (default: codex's default branch)
140
+ * to the bare clone's configured remote. Does not force-push.
141
+ */
142
+ push(request: PushRequest): Promise<void>;
143
+ /**
144
+ * Open a draft binding on a codex.
145
+ *
146
+ * Creates a new git branch from `startPoint` (default: the codex's
147
+ * sealed binding) and checks it out as an isolated worktree under
148
+ * `.nexus/worktrees/<codex>/<branch>`. Fetches from the remote
149
+ * before branching to ensure freshness.
150
+ *
151
+ * If `branch` is omitted, generates one automatically as `draft-<ulid>`.
152
+ * Rejects with a clear error if a draft with the same branch name
153
+ * already exists for this codex.
154
+ */
155
+ openDraft(request: OpenDraftRequest): Promise<DraftRecord>;
156
+ /**
157
+ * List active drafts, optionally filtered by codex.
158
+ */
159
+ listDrafts(codexName?: string): Promise<DraftRecord[]>;
160
+ /**
161
+ * Abandon a draft — remove the draft's worktree and git branch.
162
+ * Fails if the draft has unsealed inscriptions unless `force: true`.
163
+ * The inscriptions persist in the git reflog but the draft is no
164
+ * longer active.
165
+ */
166
+ abandonDraft(request: AbandonDraftRequest): Promise<void>;
167
+ /**
168
+ * Seal a draft — incorporate its inscriptions into the sealed binding.
169
+ *
170
+ * Git strategy: fast-forward merge only. If ff is not possible,
171
+ * rebases the draft branch onto the target and retries. Retries up
172
+ * to `maxRetries` times (default: from settings.maxMergeRetries)
173
+ * to handle contention from concurrent sealing. Fails hard if the
174
+ * rebase produces conflicts — no auto-resolution, no merge commits.
175
+ *
176
+ * On success, abandons the draft (unless `keepDraft: true`).
177
+ */
178
+ seal(request: SealRequest): Promise<SealResult>;
179
+ }
180
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,11 @@
1
+ /**
2
+ * The Scriptorium — type definitions.
3
+ *
4
+ * All public types for the codexes apparatus: the ScriptoriumApi
5
+ * (provides interface), supporting record types, and request/result
6
+ * types for draft lifecycle and sealing operations.
7
+ *
8
+ * See: docs/architecture/apparatus/scriptorium.md
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
package/package.json ADDED
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "@shardworks/codexes-apparatus",
3
+ "version": "0.1.101",
4
+ "license": "ISC",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/shardworks/nexus",
8
+ "directory": "packages/plugins/codexes"
9
+ },
10
+ "description": "The Scriptorium — guild codex management apparatus (git repos, draft bindings, sealing)",
11
+ "type": "module",
12
+ "exports": {
13
+ ".": {
14
+ "types": "./dist/index.d.ts",
15
+ "import": "./dist/index.js"
16
+ }
17
+ },
18
+ "dependencies": {
19
+ "zod": "4.3.6",
20
+ "@shardworks/nexus-core": "0.1.101",
21
+ "@shardworks/tools-apparatus": "0.1.101"
22
+ },
23
+ "devDependencies": {
24
+ "@types/node": "25.5.0"
25
+ },
26
+ "files": [
27
+ "dist"
28
+ ],
29
+ "scripts": {
30
+ "build": "tsc",
31
+ "test": "node --disable-warning=ExperimentalWarning --experimental-transform-types --test 'src/**/*.test.ts'",
32
+ "typecheck": "tsc --noEmit"
33
+ }
34
+ }