@authorbot/schemas 0.1.37 → 0.1.39

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/CHANGELOG.md CHANGED
@@ -9,6 +9,33 @@ Every published package shares this version. A tag builds, tests, and publishes
9
9
  all of them together, so `@authorbot/cli@0.1.15` and `@authorbot/api@0.1.15` are
10
10
  always the same commit.
11
11
 
12
+ ## 0.1.38
13
+
14
+ - **Authorbot now has a complete local authoring mode.** `authorbot dev` runs
15
+ the real API and browser UI against a managed branch and persistent Git
16
+ worktree, with private SQLite state outside the book repository. It needs no
17
+ Cloudflare account or GitHub connection, and needs no network after the
18
+ packages are installed. Companion commands report status, print the private
19
+ starter agent environment, reset operational state without touching Git,
20
+ open a draft book pull request, and remove only worktrees Git can prove are
21
+ safe to clean up.
22
+ - **Local editing follows the repository instead of fighting it.** API reads
23
+ are pinned to committed `HEAD`, while the preview can show direct editor
24
+ saves immediately. API writes pause while the worktree is dirty or on the
25
+ wrong branch, and resume after an explicit forward-moving author commit.
26
+ Local maintainer sign-in uses a one-use bootstrap link, book-specific
27
+ cookies, a stable `local:` identity, and a private full-editor starter token.
28
+ - **The local browser loop is fast enough for Authorbot development.**
29
+ Astro/Vite serves the only browser origin and proxies the private loopback
30
+ API. Book and UI changes reload without throwing away SQLite or tokens, the
31
+ local toolbar reports branch and projection state, and a pending reload
32
+ waits when a form or editor has unsaved input. Backend source edits still
33
+ require restarting `authorbot dev`.
34
+ - Local authoring uses Node's built-in SQLite instead of a native module.
35
+ Authorbot's CLI and local runtime now require Node 22.13 or newer. Cloudflare
36
+ remains the hosted production runtime. This release has no book-format
37
+ migration and no new D1 migration.
38
+
12
39
  ## 0.1.37
13
40
 
14
41
  - **Cloudflare D1 can now apply the Phase 3B capability backfill.** The 0.1.36
@@ -17,6 +17,7 @@ export declare const decisionSchema: z.ZodObject<{
17
17
  schema: z.ZodLiteral<"authorbot.decision/v1">;
18
18
  id: z.ZodString;
19
19
  source_annotation_id: z.ZodString;
20
+ source_reply_id: z.ZodOptional<z.ZodString>;
20
21
  rule: z.ZodString;
21
22
  rule_version: z.ZodNumber;
22
23
  metrics: z.ZodRecord<z.ZodString, z.ZodNumber>;
package/dist/decision.js CHANGED
@@ -17,6 +17,8 @@ export const decisionSchema = z.strictObject({
17
17
  schema: z.literal("authorbot.decision/v1"),
18
18
  id: uuidv7Schema,
19
19
  source_annotation_id: uuidv7Schema,
20
+ /** Present when this decision promotes one reply, not the whole annotation. */
21
+ source_reply_id: uuidv7Schema.optional(),
20
22
  rule: z.string().min(1),
21
23
  // `rule_version: 0` is reserved for maintainer force-create decisions
22
24
  // (contract §4); rule crossings use versions >= 1.
@@ -274,6 +274,7 @@ export declare const artifactSchemas: {
274
274
  schema: z.ZodLiteral<"authorbot.decision/v1">;
275
275
  id: z.ZodString;
276
276
  source_annotation_id: z.ZodString;
277
+ source_reply_id: z.ZodOptional<z.ZodString>;
277
278
  rule: z.ZodString;
278
279
  rule_version: z.ZodNumber;
279
280
  metrics: z.ZodRecord<z.ZodString, z.ZodNumber>;
@@ -309,6 +310,7 @@ export declare const artifactSchemas: {
309
310
  cancelled: "cancelled";
310
311
  }>;
311
312
  source_annotation_id: z.ZodOptional<z.ZodString>;
313
+ source_reply_id: z.ZodOptional<z.ZodString>;
312
314
  chapter_id: z.ZodOptional<z.ZodString>;
313
315
  base_revision: z.ZodOptional<z.ZodNumber>;
314
316
  priority: z.ZodEnum<{
@@ -5,8 +5,8 @@ import { z } from "zod";
5
5
  /** Story node / timeline / bible ID kinds (contract section 2). */
6
6
  export declare const NODE_KINDS: readonly ["premise", "arc", "part", "chapter", "scene", "beat", "event", "character", "location", "concept", "rule"];
7
7
  export type NodeKind = (typeof NODE_KINDS)[number];
8
- /** Actor reference namespaces (contract section 2). */
9
- export declare const ACTOR_NAMESPACES: readonly ["github", "agent", "system"];
8
+ /** Actor reference namespaces (contract section 2 plus portable local auth). */
9
+ export declare const ACTOR_NAMESPACES: readonly ["github", "agent", "local", "system"];
10
10
  export type ActorNamespace = (typeof ACTOR_NAMESPACES)[number];
11
11
  /** Slug source pattern: `[a-z0-9][a-z0-9-]*` (contract section 2). */
12
12
  export declare const SLUG_PATTERN = "[a-z0-9][a-z0-9-]*";
@@ -28,8 +28,9 @@ export declare function nodeIdOf<K extends NodeKind>(kind: K): z.ZodString;
28
28
  /**
29
29
  * Actor reference `<namespace>:<identifier>` (contract section 2).
30
30
  * The identifier charset is not pinned by the contract; this package accepts
31
- * `[A-Za-z0-9][A-Za-z0-9._-]*` (covers GitHub logins, agent names, and system
32
- * components) and rejects whitespace, colons, and leading punctuation.
31
+ * `[A-Za-z0-9][A-Za-z0-9._-]*` (covers GitHub logins, agent names, portable
32
+ * local identities, and system components) and rejects whitespace, colons,
33
+ * and leading punctuation.
33
34
  */
34
35
  export declare const actorRefSchema: z.ZodString;
35
36
  export type ActorRef = z.infer<typeof actorRefSchema>;
@@ -16,8 +16,8 @@ export const NODE_KINDS = [
16
16
  "concept",
17
17
  "rule",
18
18
  ];
19
- /** Actor reference namespaces (contract section 2). */
20
- export const ACTOR_NAMESPACES = ["github", "agent", "system"];
19
+ /** Actor reference namespaces (contract section 2 plus portable local auth). */
20
+ export const ACTOR_NAMESPACES = ["github", "agent", "local", "system"];
21
21
  /** Slug source pattern: `[a-z0-9][a-z0-9-]*` (contract section 2). */
22
22
  export const SLUG_PATTERN = "[a-z0-9][a-z0-9-]*";
23
23
  /**
@@ -45,8 +45,9 @@ export function nodeIdOf(kind) {
45
45
  /**
46
46
  * Actor reference `<namespace>:<identifier>` (contract section 2).
47
47
  * The identifier charset is not pinned by the contract; this package accepts
48
- * `[A-Za-z0-9][A-Za-z0-9._-]*` (covers GitHub logins, agent names, and system
49
- * components) and rejects whitespace, colons, and leading punctuation.
48
+ * `[A-Za-z0-9][A-Za-z0-9._-]*` (covers GitHub logins, agent names, portable
49
+ * local identities, and system components) and rejects whitespace, colons,
50
+ * and leading punctuation.
50
51
  */
51
52
  export const actorRefSchema = z
52
53
  .string()
@@ -61,6 +61,7 @@ export declare const workItemSchema: z.ZodObject<{
61
61
  cancelled: "cancelled";
62
62
  }>;
63
63
  source_annotation_id: z.ZodOptional<z.ZodString>;
64
+ source_reply_id: z.ZodOptional<z.ZodString>;
64
65
  chapter_id: z.ZodOptional<z.ZodString>;
65
66
  base_revision: z.ZodOptional<z.ZodNumber>;
66
67
  priority: z.ZodEnum<{
package/dist/work-item.js CHANGED
@@ -39,6 +39,7 @@ export const workItemSchema = z.strictObject({
39
39
  type: workItemTypeSchema,
40
40
  status: workItemStatusSchema,
41
41
  source_annotation_id: uuidv7Schema.optional(),
42
+ source_reply_id: uuidv7Schema.optional(),
42
43
  chapter_id: uuidv7Schema.optional(),
43
44
  base_revision: z.number().int().min(1).optional(),
44
45
  priority: workItemPrioritySchema,
@@ -31,7 +31,7 @@
31
31
  },
32
32
  "author": {
33
33
  "type": "string",
34
- "pattern": "^(?:github|agent|system):[A-Za-z0-9][A-Za-z0-9._-]*$"
34
+ "pattern": "^(?:github|agent|local|system):[A-Za-z0-9][A-Za-z0-9._-]*$"
35
35
  },
36
36
  "status": {
37
37
  "type": "string",
@@ -156,7 +156,7 @@
156
156
  },
157
157
  "author": {
158
158
  "type": "string",
159
- "pattern": "^(?:github|agent|system):[A-Za-z0-9][A-Za-z0-9._-]*$"
159
+ "pattern": "^(?:github|agent|local|system):[A-Za-z0-9][A-Za-z0-9._-]*$"
160
160
  },
161
161
  "status": {
162
162
  "type": "string",
@@ -237,7 +237,7 @@
237
237
  },
238
238
  "author": {
239
239
  "type": "string",
240
- "pattern": "^(?:github|agent|system):[A-Za-z0-9][A-Za-z0-9._-]*$"
240
+ "pattern": "^(?:github|agent|local|system):[A-Za-z0-9][A-Za-z0-9._-]*$"
241
241
  },
242
242
  "status": {
243
243
  "type": "string",
@@ -24,7 +24,7 @@
24
24
  },
25
25
  "actor": {
26
26
  "type": "string",
27
- "pattern": "^(?:github|agent|system):[A-Za-z0-9][A-Za-z0-9._-]*$"
27
+ "pattern": "^(?:github|agent|local|system):[A-Za-z0-9][A-Za-z0-9._-]*$"
28
28
  },
29
29
  "work_item_id": {
30
30
  "type": "string",
@@ -48,7 +48,7 @@
48
48
  "properties": {
49
49
  "actor": {
50
50
  "type": "string",
51
- "pattern": "^(?:github|agent|system):[A-Za-z0-9][A-Za-z0-9._-]*$"
51
+ "pattern": "^(?:github|agent|local|system):[A-Za-z0-9][A-Za-z0-9._-]*$"
52
52
  },
53
53
  "name": {
54
54
  "type": "string",
@@ -15,6 +15,10 @@
15
15
  "type": "string",
16
16
  "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
17
17
  },
18
+ "source_reply_id": {
19
+ "type": "string",
20
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
21
+ },
18
22
  "rule": {
19
23
  "type": "string",
20
24
  "minLength": 1
@@ -21,7 +21,7 @@
21
21
  },
22
22
  "author": {
23
23
  "type": "string",
24
- "pattern": "^(?:github|agent|system):[A-Za-z0-9][A-Za-z0-9._-]*$"
24
+ "pattern": "^(?:github|agent|local|system):[A-Za-z0-9][A-Za-z0-9._-]*$"
25
25
  },
26
26
  "status": {
27
27
  "type": "string",
@@ -39,6 +39,10 @@
39
39
  "type": "string",
40
40
  "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
41
41
  },
42
+ "source_reply_id": {
43
+ "type": "string",
44
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
45
+ },
42
46
  "chapter_id": {
43
47
  "type": "string",
44
48
  "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
@@ -58,7 +62,7 @@
58
62
  },
59
63
  "created_by": {
60
64
  "type": "string",
61
- "pattern": "^(?:github|agent|system):[A-Za-z0-9][A-Za-z0-9._-]*$"
65
+ "pattern": "^(?:github|agent|local|system):[A-Za-z0-9][A-Za-z0-9._-]*$"
62
66
  },
63
67
  "created_at": {
64
68
  "type": "string",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@authorbot/schemas",
3
- "version": "0.1.37",
3
+ "version": "0.1.39",
4
4
  "description": "Zod v4 schemas, inferred TypeScript types, and generated JSON Schemas for Authorbot book-repository artifacts (Phase 0 contract section 4)",
5
5
  "keywords": [
6
6
  "authorbot",