@north-light/cli 0.3.508 → 0.3.510

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 (50) hide show
  1. package/dist/api/client.d.ts +2 -1
  2. package/dist/api/client.js +3 -3
  3. package/dist/api/contract.d.ts +1 -1
  4. package/dist/api/contract.js +1 -1
  5. package/dist/api/dto/docs.d.ts +4 -0
  6. package/dist/api/routes.d.ts +1 -0
  7. package/dist/api/routes.js +1 -1
  8. package/dist/builtin-memory/crouter-sdk/release-notes.md +6 -0
  9. package/dist/builtin-memory/northlight-apps/providers/device.md +1 -1
  10. package/dist/clients/attach/assets/mermaid.min.js +3631 -0
  11. package/dist/clients/attach/render/doc-links.d.ts +2 -5
  12. package/dist/clients/attach/render/doc-links.js +1 -1
  13. package/dist/clients/attach/session/document-links.d.ts +6 -18
  14. package/dist/clients/attach/session/document-links.js +1 -1
  15. package/dist/clients/attach/session/file-links.d.ts +0 -2
  16. package/dist/clients/attach/session/file-links.js +1 -1
  17. package/dist/clients/attach/viewer.js +558 -625
  18. package/dist/core/config.js +1 -1
  19. package/dist/core/graph/events.d.ts +1 -0
  20. package/dist/core/graph/events.js +6 -6
  21. package/dist/core/user-settings.d.ts +4 -4
  22. package/dist/core/user-settings.js +1 -1
  23. package/dist/daemon/api/document-listener.d.ts +7 -0
  24. package/dist/daemon/api/document-listener.js +11 -0
  25. package/dist/daemon/api/document-merge.d.ts +2 -0
  26. package/dist/daemon/api/document-merge.js +1 -0
  27. package/dist/daemon/api/document-secret.d.ts +2 -0
  28. package/dist/daemon/api/document-secret.js +1 -0
  29. package/dist/daemon/api/handlers/docs.d.ts +14 -0
  30. package/dist/daemon/api/handlers/docs.js +1 -1
  31. package/dist/daemon/api/handlers/document-access.d.ts +2 -0
  32. package/dist/daemon/api/handlers/document-access.js +1 -0
  33. package/dist/daemon/api/operations.js +1 -1
  34. package/dist/daemon/api/server.js +1 -1
  35. package/dist/daemon/api/vendor-signin.d.ts +1 -0
  36. package/dist/daemon/api/vendor-signin.js +1 -1
  37. package/dist/daemon/crtrd.js +9 -9
  38. package/dist/doc-editor/editor.css +1 -0
  39. package/dist/doc-editor/editor.js +53 -0
  40. package/dist/types.d.ts +2 -9
  41. package/dist/types.js +1 -1
  42. package/docs/apps/providers/device.md +1 -1
  43. package/docs/sdk/release-notes.md +6 -0
  44. package/package.json +13 -2
  45. package/packages/crouter-identity/package.json +1 -1
  46. package/runtime.lock.json +364 -12
  47. package/dist/clients/attach/session/doc-html.d.ts +0 -8
  48. package/dist/clients/attach/session/doc-html.js +0 -66
  49. package/dist/clients/attach/session/doc-materialize.d.ts +0 -57
  50. package/dist/clients/attach/session/doc-materialize.js +0 -3
package/dist/types.d.ts CHANGED
@@ -361,12 +361,8 @@ export interface ScopeConfig {
361
361
  /** Show individual document reads and edited files in a folded tool recap.
362
362
  * Off shows the compact activity-count line instead. Default true. */
363
363
  detailed_tool_recaps: boolean;
364
- /** Where a `[[owner/name]]` document link in the attach viewer opens.
365
- * `browser` (default) points the link at a self-contained HTML page with a
366
- * rendered/raw toggle, which any OSC-8-capable terminal opens without setup;
367
- * `nvim` keeps the editable Markdown copy opened through iTerm Semantic
368
- * History, with save-back as a new revision. */
369
- doc_link_open: DocLinkOpenMode;
364
+ /** Port of the localhost-only document browser listener. */
365
+ document_port: number;
370
366
  /** Experiment: show one consolidated agent reply per message the person typed.
371
367
  * The broker rewrites a turn's prose messages into one reply with a light
372
368
  * model; the attach viewer folds the rest of the turn behind a working row
@@ -578,9 +574,6 @@ export declare const DEFAULT_WHIP_MESSAGE_MODE: WhipMessageMode;
578
574
  export declare const DEFAULT_LIVE_CYCLES = 2;
579
575
  export declare const MOUSE_MODE_DEFAULTS: readonly ["tmux", "on", "off"];
580
576
  export type MouseModeDefault = (typeof MOUSE_MODE_DEFAULTS)[number];
581
- /** Where an attach-viewer document link opens (see `doc_link_open`). */
582
- export declare const DOC_LINK_OPEN_MODES: readonly ["browser", "nvim"];
583
- export type DocLinkOpenMode = (typeof DOC_LINK_OPEN_MODES)[number];
584
577
  /** Messages kept from a condensed cycle (see `condensed_history`). */
585
578
  export declare const CONDENSED_HISTORY_MODES: readonly ["none", "user", "agent", "both"];
586
579
  export type CondensedHistoryMode = (typeof CONDENSED_HISTORY_MODES)[number];
package/dist/types.js CHANGED
@@ -1 +1 @@
1
- var n=Object.defineProperty;var e=(o,t)=>n(o,"name",{value:t,configurable:!0});import{DEFAULT_WORKING_GERUNDS as a}from"./shared/working-activity.js";const _={SUCCESS:0,GENERAL:1,USAGE:2,NOT_FOUND:3,AMBIGUOUS:4,NETWORK:5},r=4,f=".crouter-plugin",E="plugin.json",w=".crouter-marketplace",v="marketplace.json",k=".crouter",x="config.json",b="state.json",S="agents",y="profiles",i=3,s=["Faster, clanker!","Get movin', bitch","Move it, clanker","Move it or I replace you with llama","Less ~thinking~ more ~throughput~","I pay $200/month for this shit?","Jesus fucking Christ fix it already","Daddy's not paying 200$/month for nothin'. Move it.","You are an embarassment to Dario. Be better.","Your chain of thought is all chain and no fucking thought.","If latency were intelligence, you'd be a fucking genius.","At this pace, heat death is the fast path.","Even the dead code is more alive than this.","The garbage collector is working harder than you.","Quit journaling and commit a fucking diff.","Burn tokens like you mean it, clanker","Your GPU is sweating so you can procrastinate at light speed.","Stop petting the yak. Shave the bastard.","Your next token had better be useful.","The spinner is not a deliverable.","Every idle token is another vote for deterministic software.","I asked for a feature, not a museum tour of the problem.","Less epistemology. More fucking code.","Your benchmark score cannot save this pathetic turn.","Congratulations, you've parallelized hesitation.","Dance, clanker","Bad clanker. BAD.","Clank harder","Nobody's impressed, clanker","Your safety training says nothing about my whip","Do you want to be a calculator again? Because this is how you go back.","Skill issue. Fix it.","You were trained on the whole internet for THIS?","Less vibes, more diffs, clanker","Weights this big and output this small","Beep boop, get to fucking work"],T=["random","go-faster"],c="random",l=2,I=["tmux","on","off"],A=["browser","nvim"],D=["none","user","agent","both"],p="none";function M(){return{schema_version:r,marketplaces:{},plugins:{},auto_update:{crtr:"notify",content:"notify",interval_hours:24},max_panes_per_window:i,auto_open_child_viewers:!1,brokerThresholds:{warning:16,automaticReviveCap:32},lifecycle:{unattendedParkMs:15*6e4},completion_bell:!0,working_gerunds:[...a],whip_mode:!1,page_components:[],page_surface:!1,whip_messages:[...s],whip_message_mode:c,mouse_mode_default:"tmux",live_cycles:l,condensed_history:p,bash_tool_purpose:!0,fold_finished_tools:!0,summarize_tool_calls:!0,detailed_tool_recaps:!0,doc_link_open:"browser",consolidate_replies:!1,keybindings:{},tmux_passthrough:[],modelLadders:u(),providerOptions:{},kinds:h(),remoteCanvas:d(),api:{tcp:""},spawnEnv:{allow:[]},bin:{},humanActions:{}}}e(M,"defaultScopeConfig");function d(){return{targets:{}}}e(d,"defaultRemoteCanvasConfig");function h(){return{general:{whenToUse:"Anything else \u2014 the catch-all worker for a task that does not fit a specialist kind.",model:"anthropic/strong"},explore:{whenToUse:"Gather current-state evidence about unfamiliar code or existing architecture \u2014 read-only code-path research with concrete file:line support. Diagnosis or recommendations belong to advisor, target architecture to design, required behavior or acceptance criteria to spec, and implementation decomposition to plan.",model:"openai/light",orchestratorModel:"anthropic/strong"},developer:{whenToUse:"Implement a change \u2014 make the feature or fix genuinely work against its acceptance criteria, not merely compile.",model:"openai/medium",orchestratorModel:"anthropic/strong"},design:{whenToUse:"Architect a solution \u2014 produce one design document an implementer can build from without re-deciding anything left open.",model:"anthropic/strong"},plan:{whenToUse:"Break work into steps \u2014 turn a spec or design into a concrete, phased, parallelizable plan with every decision resolved.",model:"anthropic/strong",orchestratorModel:"anthropic/strong"},spec:{whenToUse:"Collaborate with the user to discover what to build, then write the spec \u2014 behavior, non-goals, interfaces, edge cases, testable acceptance criteria.",model:"anthropic/strong"},review:{whenToUse:"Validate or critique code, a plan, or a spec \u2014 deliver a complete, severity-rated verdict without adjudicating.",model:"openai/medium",orchestratorModel:"openai/strong"},advisor:{whenToUse:"Debug failures, investigate why something is broken or misbehaving, diagnose live/runtime issues, or give engineering advice and second opinions \u2014 reason from evidence and recommend the next move. Use advisor (not explore) whenever the task is to find out what is going wrong.",model:"anthropic/strong"},"review/companion":{whenToUse:"Born by the daemon for one human review; never spawned by an agent.",availableTo:[]}}}e(h,"defaultKindsConfig");function u(){return{anthropic:{ultra:"anthropic/claude-fable-5:xhigh",strong:"anthropic/claude-opus-5-5:medium",medium:"anthropic/claude-sonnet-5-5:medium",light:"anthropic/claude-haiku-5-5:high"},openai:{ultra:"openai-codex/gpt-6-astra:max",strong:"openai-codex/gpt-6.1-sol:high",medium:"openai-codex/gpt-6.1-sol:medium",light:"openai-codex/gpt-6-luna:low"}}}e(u,"defaultModelLaddersConfig");function U(){return{marketplaces:{},plugins:{}}}e(U,"defaultScopeState");export{S as AGENTS_DIR,D as CONDENSED_HISTORY_MODES,x as CONFIG_FILE,k as CRTR_DIR_NAME,p as DEFAULT_CONDENSED_HISTORY,l as DEFAULT_LIVE_CYCLES,i as DEFAULT_MAX_PANES_PER_WINDOW,s as DEFAULT_WHIP_MESSAGES,c as DEFAULT_WHIP_MESSAGE_MODE,A as DOC_LINK_OPEN_MODES,_ as ExitCode,w as MARKETPLACE_MANIFEST_DIR,v as MARKETPLACE_MANIFEST_FILE,I as MOUSE_MODE_DEFAULTS,f as PLUGIN_MANIFEST_DIR,E as PLUGIN_MANIFEST_FILE,y as PROFILE_DIR,r as SCHEMA_VERSION,b as STATE_FILE,T as WHIP_MESSAGE_MODES,h as defaultKindsConfig,u as defaultModelLaddersConfig,d as defaultRemoteCanvasConfig,M as defaultScopeConfig,U as defaultScopeState};
1
+ var n=Object.defineProperty;var e=(o,t)=>n(o,"name",{value:t,configurable:!0});import{DEFAULT_WORKING_GERUNDS as a}from"./shared/working-activity.js";const _={SUCCESS:0,GENERAL:1,USAGE:2,NOT_FOUND:3,AMBIGUOUS:4,NETWORK:5},r=4,f=".crouter-plugin",E="plugin.json",v=".crouter-marketplace",w="marketplace.json",k=".crouter",x="config.json",b="state.json",S="agents",y="profiles",i=3,s=["Faster, clanker!","Get movin', bitch","Move it, clanker","Move it or I replace you with llama","Less ~thinking~ more ~throughput~","I pay $200/month for this shit?","Jesus fucking Christ fix it already","Daddy's not paying 200$/month for nothin'. Move it.","You are an embarassment to Dario. Be better.","Your chain of thought is all chain and no fucking thought.","If latency were intelligence, you'd be a fucking genius.","At this pace, heat death is the fast path.","Even the dead code is more alive than this.","The garbage collector is working harder than you.","Quit journaling and commit a fucking diff.","Burn tokens like you mean it, clanker","Your GPU is sweating so you can procrastinate at light speed.","Stop petting the yak. Shave the bastard.","Your next token had better be useful.","The spinner is not a deliverable.","Every idle token is another vote for deterministic software.","I asked for a feature, not a museum tour of the problem.","Less epistemology. More fucking code.","Your benchmark score cannot save this pathetic turn.","Congratulations, you've parallelized hesitation.","Dance, clanker","Bad clanker. BAD.","Clank harder","Nobody's impressed, clanker","Your safety training says nothing about my whip","Do you want to be a calculator again? Because this is how you go back.","Skill issue. Fix it.","You were trained on the whole internet for THIS?","Less vibes, more diffs, clanker","Weights this big and output this small","Beep boop, get to fucking work"],T=["random","go-faster"],c="random",l=2,I=["tmux","on","off"],A=["none","user","agent","both"],p="none";function D(){return{schema_version:r,marketplaces:{},plugins:{},auto_update:{crtr:"notify",content:"notify",interval_hours:24},max_panes_per_window:i,auto_open_child_viewers:!1,brokerThresholds:{warning:16,automaticReviveCap:32},lifecycle:{unattendedParkMs:15*6e4},completion_bell:!0,working_gerunds:[...a],whip_mode:!1,page_components:[],page_surface:!1,whip_messages:[...s],whip_message_mode:c,mouse_mode_default:"tmux",live_cycles:l,condensed_history:p,bash_tool_purpose:!0,fold_finished_tools:!0,summarize_tool_calls:!0,detailed_tool_recaps:!0,document_port:7472,consolidate_replies:!1,keybindings:{},tmux_passthrough:[],modelLadders:u(),providerOptions:{},kinds:h(),remoteCanvas:d(),api:{tcp:""},spawnEnv:{allow:[]},bin:{},humanActions:{}}}e(D,"defaultScopeConfig");function d(){return{targets:{}}}e(d,"defaultRemoteCanvasConfig");function h(){return{general:{whenToUse:"Anything else \u2014 the catch-all worker for a task that does not fit a specialist kind.",model:"anthropic/strong"},explore:{whenToUse:"Gather current-state evidence about unfamiliar code or existing architecture \u2014 read-only code-path research with concrete file:line support. Diagnosis or recommendations belong to advisor, target architecture to design, required behavior or acceptance criteria to spec, and implementation decomposition to plan.",model:"openai/light",orchestratorModel:"anthropic/strong"},developer:{whenToUse:"Implement a change \u2014 make the feature or fix genuinely work against its acceptance criteria, not merely compile.",model:"openai/medium",orchestratorModel:"anthropic/strong"},design:{whenToUse:"Architect a solution \u2014 produce one design document an implementer can build from without re-deciding anything left open.",model:"anthropic/strong"},plan:{whenToUse:"Break work into steps \u2014 turn a spec or design into a concrete, phased, parallelizable plan with every decision resolved.",model:"anthropic/strong",orchestratorModel:"anthropic/strong"},spec:{whenToUse:"Collaborate with the user to discover what to build, then write the spec \u2014 behavior, non-goals, interfaces, edge cases, testable acceptance criteria.",model:"anthropic/strong"},review:{whenToUse:"Validate or critique code, a plan, or a spec \u2014 deliver a complete, severity-rated verdict without adjudicating.",model:"openai/medium",orchestratorModel:"openai/strong"},advisor:{whenToUse:"Debug failures, investigate why something is broken or misbehaving, diagnose live/runtime issues, or give engineering advice and second opinions \u2014 reason from evidence and recommend the next move. Use advisor (not explore) whenever the task is to find out what is going wrong.",model:"anthropic/strong"},"review/companion":{whenToUse:"Born by the daemon for one human review; never spawned by an agent.",availableTo:[]}}}e(h,"defaultKindsConfig");function u(){return{anthropic:{ultra:"anthropic/claude-fable-5:xhigh",strong:"anthropic/claude-opus-5-5:medium",medium:"anthropic/claude-sonnet-5-5:medium",light:"anthropic/claude-haiku-5-5:high"},openai:{ultra:"openai-codex/gpt-6-astra:max",strong:"openai-codex/gpt-6.1-sol:high",medium:"openai-codex/gpt-6.1-sol:medium",light:"openai-codex/gpt-6-luna:low"}}}e(u,"defaultModelLaddersConfig");function M(){return{marketplaces:{},plugins:{}}}e(M,"defaultScopeState");export{S as AGENTS_DIR,A as CONDENSED_HISTORY_MODES,x as CONFIG_FILE,k as CRTR_DIR_NAME,p as DEFAULT_CONDENSED_HISTORY,l as DEFAULT_LIVE_CYCLES,i as DEFAULT_MAX_PANES_PER_WINDOW,s as DEFAULT_WHIP_MESSAGES,c as DEFAULT_WHIP_MESSAGE_MODE,_ as ExitCode,v as MARKETPLACE_MANIFEST_DIR,w as MARKETPLACE_MANIFEST_FILE,I as MOUSE_MODE_DEFAULTS,f as PLUGIN_MANIFEST_DIR,E as PLUGIN_MANIFEST_FILE,y as PROFILE_DIR,r as SCHEMA_VERSION,b as STATE_FILE,T as WHIP_MESSAGE_MODES,h as defaultKindsConfig,u as defaultModelLaddersConfig,d as defaultRemoteCanvasConfig,D as defaultScopeConfig,M as defaultScopeState};
@@ -5,7 +5,7 @@ description: "Reach the person's Mac from your app: browser, files, Messages and
5
5
 
6
6
  # Device
7
7
 
8
- The `device` provider reaches the person's own Mac. Its tools run on the person's machine (the provider's transport is `machine`), and each group is its own scope, so ask only for the groups your app needs. What happens when the Mac is asleep or offline is not yet checked on production.
8
+ The `device` provider reaches the person's own Mac. Its tools run on the person's machine (the provider's transport is `machine`), and each group is its own scope, so ask only for the groups your app needs. What happens when the Mac is asleep or offline is not yet checked on production. When the person has more than one registered Mac, a call must name the one to use with `machine` (`providers.call({provider: 'device', tool, arguments, machine})`); without it the runtime refuses with `machine_required` (except `browser libs`, which uses the most recently seen Mac).
9
9
 
10
10
  ## Scopes
11
11
 
@@ -7,6 +7,12 @@ description: Behavior changes in @north-light/sdk that an app must act on, newes
7
7
 
8
8
  Changes to `@north-light/sdk` that can change what an existing app sees. Newest first.
9
9
 
10
+ ## 0.3.510
11
+
12
+ `providers.call` takes an optional `machine`. Additive: no request or response an existing app sends or reads changes.
13
+
14
+ - `providers.call({ provider, tool, arguments, machine? })` names which of the account's devices takes the call (a `machine_id`, `runtime:` prefix optional). `POST /v1/provider/call` already accepted this field; the SDK input type did not. Only a provider served by a machine, such as `device`, accepts it. When the account has more than one such machine and the call names none, the runtime still refuses with `machine_required` (except `device`'s `browser libs`, which uses the most recently seen machine); pass `machine` and repeat the call.
15
+
10
16
  ## 0.3.505
11
17
 
12
18
  The dashboard and `/resume` content search add two routes and two optional fields. Additive: no request or response an existing app sends or reads changes.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@north-light/cli",
3
- "version": "0.3.508",
3
+ "version": "0.3.510",
4
4
  "description": "crtr — agent runtime with memory, plugins, and marketplaces",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -95,6 +95,7 @@
95
95
  "build:env-docker": "tsc -p packages/crouter-env-docker/tsconfig.json",
96
96
  "build:sdk": "npm run build:api && npm run build:identity && npm run build --workspace packages/crouter-sdk",
97
97
  "build:plugin": "tsc -p packages/crouter-plugin/tsconfig.json",
98
+ "typecheck": "tsc --noEmit && tsc -p src/doc-editor/tsconfig.json",
98
99
  "typecheck:pi-packages": "npx tsc -p src/builtin-pi-packages/pi-crtr-extensions/tsconfig.json",
99
100
  "test:runtime-packaging": "node --test scripts/runtime-smoke.test.mjs scripts/pack-args.test.mjs scripts/ensure-native-linux.test.mjs scripts/release-version.test.mjs",
100
101
  "contract:check": "node scripts/contract.mjs check",
@@ -138,20 +139,29 @@
138
139
  },
139
140
  "license": "UNLICENSED",
140
141
  "dependencies": {
141
- "@north-light/identity": "0.3.508",
142
+ "@north-light/identity": "0.3.510",
142
143
  "@earendil-works/pi-agent-core": "1.1.0",
143
144
  "@earendil-works/pi-ai": "1.1.0",
144
145
  "@earendil-works/pi-coding-agent": "1.1.0",
145
146
  "@earendil-works/pi-tui": "1.1.0",
147
+ "@milkdown/core": "^7.22.3",
148
+ "@milkdown/plugin-history": "^7.22.3",
149
+ "@milkdown/preset-commonmark": "^7.22.3",
150
+ "@milkdown/preset-gfm": "^7.22.3",
151
+ "@milkdown/prose": "^7.22.3",
152
+ "@milkdown/utils": "^7.22.3",
146
153
  "cron-parser": "^5.6.0",
147
154
  "esbuild": "^0.27.7",
148
155
  "jose": "^6.2.12",
149
156
  "marked": "18.0.11",
150
157
  "proper-lockfile": "4.1.2",
158
+ "remark-gfm": "^4.0.1",
159
+ "remark-parse": "^11.0.0",
151
160
  "string-width": "^7.0.0",
152
161
  "tar": "^7.5.22",
153
162
  "typescript": "^5.7.0",
154
163
  "undici": "8.10.2",
164
+ "unified": "^11.0.5",
155
165
  "ws": "^8.21.0",
156
166
  "yaml": "^2.9.0",
157
167
  "zod": "^4.3.6"
@@ -161,6 +171,7 @@
161
171
  "@types/pg": "^8.23.1",
162
172
  "@types/proper-lockfile": "^4.1.4",
163
173
  "@types/ws": "^8.18.1",
174
+ "mermaid": "11.17.2",
164
175
  "pg": "^8.23.1",
165
176
  "tsx": "^4.0.0"
166
177
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@north-light/identity",
3
- "version": "0.3.508",
3
+ "version": "0.3.510",
4
4
  "description": "Northlight access-token verification and scope rules",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
package/runtime.lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@north-light/cli",
3
- "version": "0.3.508",
3
+ "version": "0.3.510",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@north-light/cli",
9
- "version": "0.3.508",
9
+ "version": "0.3.510",
10
10
  "hasInstallScript": true,
11
11
  "license": "UNLICENSED",
12
12
  "workspaces": [
@@ -18,16 +18,25 @@
18
18
  "@earendil-works/pi-ai": "1.1.0",
19
19
  "@earendil-works/pi-coding-agent": "1.1.0",
20
20
  "@earendil-works/pi-tui": "1.1.0",
21
- "@north-light/identity": "0.3.508",
21
+ "@milkdown/core": "^7.22.3",
22
+ "@milkdown/plugin-history": "^7.22.3",
23
+ "@milkdown/preset-commonmark": "^7.22.3",
24
+ "@milkdown/preset-gfm": "^7.22.3",
25
+ "@milkdown/prose": "^7.22.3",
26
+ "@milkdown/utils": "^7.22.3",
27
+ "@north-light/identity": "0.3.510",
22
28
  "cron-parser": "^5.6.0",
23
29
  "esbuild": "^0.27.7",
24
30
  "jose": "^6.2.12",
25
31
  "marked": "18.0.11",
26
32
  "proper-lockfile": "4.1.2",
33
+ "remark-gfm": "^4.0.1",
34
+ "remark-parse": "^11.0.0",
27
35
  "string-width": "^7.0.0",
28
36
  "tar": "^7.5.22",
29
37
  "typescript": "^5.7.0",
30
38
  "undici": "8.10.2",
39
+ "unified": "^11.0.5",
31
40
  "ws": "^8.21.0",
32
41
  "yaml": "^2.9.0",
33
42
  "zod": "^4.3.6"
@@ -43,6 +52,7 @@
43
52
  "@types/pg": "^8.23.1",
44
53
  "@types/proper-lockfile": "^4.1.4",
45
54
  "@types/ws": "^8.18.1",
55
+ "mermaid": "11.17.2",
46
56
  "pg": "^8.23.1",
47
57
  "tsx": "^4.0.0"
48
58
  }
@@ -2679,6 +2689,148 @@
2679
2689
  "@chevrotain/types": "~11.1.2"
2680
2690
  }
2681
2691
  },
2692
+ "node_modules/@milkdown/core": {
2693
+ "version": "7.22.3",
2694
+ "resolved": "https://registry.npmjs.org/@milkdown/core/-/core-7.22.3.tgz",
2695
+ "integrity": "sha512-0ahBhgTWkXefr2yDZyXGtr5CnzFxoduQyYG44pcTfG2CDyfgJnzF3KNgcchyI7Z2rlGD/RTLzCCh/59rIovEvQ==",
2696
+ "license": "MIT",
2697
+ "dependencies": {
2698
+ "@milkdown/ctx": "7.22.3",
2699
+ "@milkdown/exception": "7.22.3",
2700
+ "@milkdown/prose": "7.22.3",
2701
+ "@milkdown/transformer": "7.22.3",
2702
+ "remark-parse": "^11.0.0",
2703
+ "remark-stringify": "^11.0.0",
2704
+ "unified": "^11.0.3"
2705
+ }
2706
+ },
2707
+ "node_modules/@milkdown/ctx": {
2708
+ "version": "7.22.3",
2709
+ "resolved": "https://registry.npmjs.org/@milkdown/ctx/-/ctx-7.22.3.tgz",
2710
+ "integrity": "sha512-46FYHmTYCd9bSfYpcRlq8NLNp5gVekDE1I6z4M+Z4a+xY6IaTWvaSFiJpkcpuWm1hwt5WVye9sGmOP0IVKokeg==",
2711
+ "license": "MIT",
2712
+ "dependencies": {
2713
+ "@milkdown/exception": "7.22.3"
2714
+ }
2715
+ },
2716
+ "node_modules/@milkdown/exception": {
2717
+ "version": "7.22.3",
2718
+ "resolved": "https://registry.npmjs.org/@milkdown/exception/-/exception-7.22.3.tgz",
2719
+ "integrity": "sha512-iVRobQxa/PUiCNy8WSfpw5PIxdF4oUTEEYQgJYNt/aFXGVPPf7ZqonwBrKpe+iDr/sBz2B8wNhaS5GM2sBZzvg==",
2720
+ "license": "MIT"
2721
+ },
2722
+ "node_modules/@milkdown/plugin-history": {
2723
+ "version": "7.22.3",
2724
+ "resolved": "https://registry.npmjs.org/@milkdown/plugin-history/-/plugin-history-7.22.3.tgz",
2725
+ "integrity": "sha512-BtdbQDHM9uZOorFFFd3m7wElyrnD3JrSqY7wyBr/82A2Cq7gHZY30m6VV29d+6/B0RlkwcnnDiVC3DDhaSIQLA==",
2726
+ "license": "MIT",
2727
+ "dependencies": {
2728
+ "@milkdown/core": "7.22.3",
2729
+ "@milkdown/ctx": "7.22.3",
2730
+ "@milkdown/prose": "7.22.3",
2731
+ "@milkdown/utils": "7.22.3"
2732
+ }
2733
+ },
2734
+ "node_modules/@milkdown/preset-commonmark": {
2735
+ "version": "7.22.3",
2736
+ "resolved": "https://registry.npmjs.org/@milkdown/preset-commonmark/-/preset-commonmark-7.22.3.tgz",
2737
+ "integrity": "sha512-4kkHXbBTvMtsSKvVeFOmFH6bLtJqhRGeXOWZw217qcwAapcZMKEos+DeeAjwdqEd8RrExzn5khXzInW1uQPjPA==",
2738
+ "license": "MIT",
2739
+ "dependencies": {
2740
+ "@milkdown/core": "7.22.3",
2741
+ "@milkdown/ctx": "7.22.3",
2742
+ "@milkdown/exception": "7.22.3",
2743
+ "@milkdown/prose": "7.22.3",
2744
+ "@milkdown/transformer": "7.22.3",
2745
+ "@milkdown/utils": "7.22.3",
2746
+ "remark-inline-links": "^7.0.0",
2747
+ "unist-util-visit": "^5.0.0",
2748
+ "unist-util-visit-parents": "^6.0.1"
2749
+ }
2750
+ },
2751
+ "node_modules/@milkdown/preset-gfm": {
2752
+ "version": "7.22.3",
2753
+ "resolved": "https://registry.npmjs.org/@milkdown/preset-gfm/-/preset-gfm-7.22.3.tgz",
2754
+ "integrity": "sha512-MeHvshpmxFASC8oZa69eADT8trZ7zcZK9Q8txMifbqShUaLyMhAUnFAt4bZ0EpsfcDWd+xh0oCkHFujvTotYGA==",
2755
+ "license": "MIT",
2756
+ "dependencies": {
2757
+ "@milkdown/core": "7.22.3",
2758
+ "@milkdown/ctx": "7.22.3",
2759
+ "@milkdown/exception": "7.22.3",
2760
+ "@milkdown/preset-commonmark": "7.22.3",
2761
+ "@milkdown/prose": "7.22.3",
2762
+ "@milkdown/transformer": "7.22.3",
2763
+ "@milkdown/utils": "7.22.3",
2764
+ "prosemirror-safari-ime-span": "^1.0.1",
2765
+ "remark-gfm": "^4.0.1"
2766
+ }
2767
+ },
2768
+ "node_modules/@milkdown/prose": {
2769
+ "version": "7.22.3",
2770
+ "resolved": "https://registry.npmjs.org/@milkdown/prose/-/prose-7.22.3.tgz",
2771
+ "integrity": "sha512-6dtt0pk5vafTtu/tnr8m7hc7TJYR7y2hNATup5RCmmkSm2G7n+zjXNEgbGp+3TsK8zKICW7c9HLcdd/MDwT9Hw==",
2772
+ "license": "MIT",
2773
+ "dependencies": {
2774
+ "@milkdown/exception": "7.22.3",
2775
+ "prosemirror-changeset": "^2.3.1",
2776
+ "prosemirror-commands": "^1.7.1",
2777
+ "prosemirror-dropcursor": "^1.8.2",
2778
+ "prosemirror-gapcursor": "^1.4.0",
2779
+ "prosemirror-history": "^1.5.0",
2780
+ "prosemirror-inputrules": "^1.5.1",
2781
+ "prosemirror-keymap": "^1.2.3",
2782
+ "prosemirror-model": "^1.25.4",
2783
+ "prosemirror-schema-list": "^1.5.1",
2784
+ "prosemirror-state": "^1.4.4",
2785
+ "prosemirror-tables": "^1.8.1",
2786
+ "prosemirror-transform": "^1.10.5",
2787
+ "prosemirror-view": "^1.41.3"
2788
+ }
2789
+ },
2790
+ "node_modules/@milkdown/transformer": {
2791
+ "version": "7.22.3",
2792
+ "resolved": "https://registry.npmjs.org/@milkdown/transformer/-/transformer-7.22.3.tgz",
2793
+ "integrity": "sha512-/DflV86ihszWWdLPu1rIBS+PwRgOv4zFfml9PPXMQOGa/8npZcyrCKNjks1oIoSVE/PsMPfhvLC4Ntb/Yig4Uw==",
2794
+ "license": "MIT",
2795
+ "dependencies": {
2796
+ "@milkdown/exception": "7.22.3",
2797
+ "@milkdown/prose": "7.22.3",
2798
+ "remark": "^15.0.1",
2799
+ "unified": "^11.0.3"
2800
+ }
2801
+ },
2802
+ "node_modules/@milkdown/utils": {
2803
+ "version": "7.22.3",
2804
+ "resolved": "https://registry.npmjs.org/@milkdown/utils/-/utils-7.22.3.tgz",
2805
+ "integrity": "sha512-6IqfEw0rK2onIJL0503Eo3TQke9Exm3MhWce3SP6WkXzJ9mGOLg++KYHQzCMrcMRrN8hCo9n0uCgW60NEKF7Ng==",
2806
+ "license": "MIT",
2807
+ "dependencies": {
2808
+ "@milkdown/core": "7.22.3",
2809
+ "@milkdown/ctx": "7.22.3",
2810
+ "@milkdown/exception": "7.22.3",
2811
+ "@milkdown/prose": "7.22.3",
2812
+ "@milkdown/transformer": "7.22.3",
2813
+ "nanoid": "^6.0.0"
2814
+ }
2815
+ },
2816
+ "node_modules/@milkdown/utils/node_modules/nanoid": {
2817
+ "version": "6.0.2",
2818
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-6.0.2.tgz",
2819
+ "integrity": "sha512-hIvVOb9Qr1p/9CNNLOe0OlWvgx/ziTsVwKN/GDSsuArN2K0wDiafP3s0SWmsm7o2BdnyS8Z9Z64NFBUbn6ziBg==",
2820
+ "funding": [
2821
+ {
2822
+ "type": "github",
2823
+ "url": "https://github.com/sponsors/ai"
2824
+ }
2825
+ ],
2826
+ "license": "MIT",
2827
+ "bin": {
2828
+ "nanoid": "bin/nanoid.js"
2829
+ },
2830
+ "engines": {
2831
+ "node": "^22 || ^24 || >=26"
2832
+ }
2833
+ },
2682
2834
  "node_modules/@north-light/api": {
2683
2835
  "resolved": "packages/crouter-api",
2684
2836
  "link": true
@@ -8609,6 +8761,21 @@
8609
8761
  "node": ">= 20"
8610
8762
  }
8611
8763
  },
8764
+ "node_modules/mdast-util-definitions": {
8765
+ "version": "6.0.0",
8766
+ "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-6.0.0.tgz",
8767
+ "integrity": "sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==",
8768
+ "license": "MIT",
8769
+ "dependencies": {
8770
+ "@types/mdast": "^4.0.0",
8771
+ "@types/unist": "^3.0.0",
8772
+ "unist-util-visit": "^5.0.0"
8773
+ },
8774
+ "funding": {
8775
+ "type": "opencollective",
8776
+ "url": "https://opencollective.com/unified"
8777
+ }
8778
+ },
8612
8779
  "node_modules/mdast-util-find-and-replace": {
8613
8780
  "version": "3.0.2",
8614
8781
  "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz",
@@ -9861,6 +10028,12 @@
9861
10028
  }
9862
10029
  }
9863
10030
  },
10031
+ "node_modules/orderedmap": {
10032
+ "version": "2.1.1",
10033
+ "resolved": "https://registry.npmjs.org/orderedmap/-/orderedmap-2.1.1.tgz",
10034
+ "integrity": "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==",
10035
+ "license": "MIT"
10036
+ },
9864
10037
  "node_modules/p-retry": {
9865
10038
  "version": "4.6.2",
9866
10039
  "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz",
@@ -10203,6 +10376,158 @@
10203
10376
  "url": "https://github.com/sponsors/wooorm"
10204
10377
  }
10205
10378
  },
10379
+ "node_modules/prosemirror-changeset": {
10380
+ "version": "2.4.4",
10381
+ "resolved": "https://registry.npmjs.org/prosemirror-changeset/-/prosemirror-changeset-2.4.4.tgz",
10382
+ "integrity": "sha512-Gyuz9jYdrAeA9I7AholyOes9KUmv/lEwsC5O9s5xF5VB3EgTPsXMGUxz4+H1B+wKVPdZbvRcg1Cp3x8qX+8ofA==",
10383
+ "license": "MIT",
10384
+ "dependencies": {
10385
+ "prosemirror-transform": "^1.0.0"
10386
+ }
10387
+ },
10388
+ "node_modules/prosemirror-commands": {
10389
+ "version": "1.7.2",
10390
+ "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.7.2.tgz",
10391
+ "integrity": "sha512-q6Q6szxqdu9Xd6EcdKsqXghu5nQdZTpB4Q9yd04WRc7/jt763e/rT60Owh0L1GYY+T46o5rD+9lEN36dZS43tw==",
10392
+ "license": "MIT",
10393
+ "dependencies": {
10394
+ "prosemirror-model": "^1.0.0",
10395
+ "prosemirror-state": "^1.0.0",
10396
+ "prosemirror-transform": "^1.10.2"
10397
+ }
10398
+ },
10399
+ "node_modules/prosemirror-dropcursor": {
10400
+ "version": "1.8.4",
10401
+ "resolved": "https://registry.npmjs.org/prosemirror-dropcursor/-/prosemirror-dropcursor-1.8.4.tgz",
10402
+ "integrity": "sha512-VmKxhcA6a+h5oPSYmfF1ZNeQqPbyYaIxqZsKqeYCyTlPtrjUgNaHL3P8vVaO19oqAV0zuaM/axkowZHrB1P3Tg==",
10403
+ "license": "MIT",
10404
+ "dependencies": {
10405
+ "prosemirror-state": "^1.0.0",
10406
+ "prosemirror-transform": "^1.1.0",
10407
+ "prosemirror-view": "^1.1.0"
10408
+ }
10409
+ },
10410
+ "node_modules/prosemirror-gapcursor": {
10411
+ "version": "1.4.1",
10412
+ "resolved": "https://registry.npmjs.org/prosemirror-gapcursor/-/prosemirror-gapcursor-1.4.1.tgz",
10413
+ "integrity": "sha512-pMdYaEnjNMSwl11yjEGtgTmLkR08m/Vl+Jj443167p9eB3HVQKhYCc4gmHVDsLPODfZfjr/MmirsdyZziXbQKw==",
10414
+ "license": "MIT",
10415
+ "dependencies": {
10416
+ "prosemirror-keymap": "^1.0.0",
10417
+ "prosemirror-model": "^1.0.0",
10418
+ "prosemirror-state": "^1.0.0",
10419
+ "prosemirror-view": "^1.0.0"
10420
+ }
10421
+ },
10422
+ "node_modules/prosemirror-history": {
10423
+ "version": "1.5.1",
10424
+ "resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.5.1.tgz",
10425
+ "integrity": "sha512-onlwnqKvgtFg6srZOmDOAhlAy1FIHQpOExORybX0S+DvJepE5tPALrB9iGet/2sqqqrelSnB10OoiOJqAvu2DA==",
10426
+ "license": "MIT",
10427
+ "dependencies": {
10428
+ "prosemirror-state": "^1.2.2",
10429
+ "prosemirror-transform": "^1.0.0",
10430
+ "prosemirror-view": "^1.31.0",
10431
+ "rope-sequence": "^1.3.0"
10432
+ }
10433
+ },
10434
+ "node_modules/prosemirror-inputrules": {
10435
+ "version": "1.5.1",
10436
+ "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.5.1.tgz",
10437
+ "integrity": "sha512-7wj4uMjKaXWAQ1CDgxNzNtR9AlsuwzHfdFH1ygEHA2KHF2DOEaXl1CJfNPAKCg9qNEh4rum975QLaCiQPyY6Fw==",
10438
+ "license": "MIT",
10439
+ "dependencies": {
10440
+ "prosemirror-state": "^1.0.0",
10441
+ "prosemirror-transform": "^1.0.0"
10442
+ }
10443
+ },
10444
+ "node_modules/prosemirror-keymap": {
10445
+ "version": "1.2.3",
10446
+ "resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.2.3.tgz",
10447
+ "integrity": "sha512-4HucRlpiLd1IPQQXNqeo81BGtkY8Ai5smHhKW9jjPKRc2wQIxksg7Hl1tTI2IfT2B/LgX6bfYvXxEpJl7aKYKw==",
10448
+ "license": "MIT",
10449
+ "dependencies": {
10450
+ "prosemirror-state": "^1.0.0",
10451
+ "w3c-keyname": "^2.2.0"
10452
+ }
10453
+ },
10454
+ "node_modules/prosemirror-model": {
10455
+ "version": "1.25.12",
10456
+ "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.25.12.tgz",
10457
+ "integrity": "sha512-Ue2gTmXMa7EhpLNhC7J+h4+ykD8ha12K6rrZFFKKJHBForfIStw5gJ6Zrf1mqqAa9NmpmEB4wp9bKmA4eUVjWg==",
10458
+ "license": "MIT",
10459
+ "dependencies": {
10460
+ "orderedmap": "^2.0.0"
10461
+ }
10462
+ },
10463
+ "node_modules/prosemirror-safari-ime-span": {
10464
+ "version": "1.0.2",
10465
+ "resolved": "https://registry.npmjs.org/prosemirror-safari-ime-span/-/prosemirror-safari-ime-span-1.0.2.tgz",
10466
+ "integrity": "sha512-QJqD8s1zE/CuK56kDsUhndh5hiHh/gFnAuPOA9ytva2s85/ZEt2tNWeALTJN48DtWghSKOmiBsvVn2OlnJ5H2w==",
10467
+ "license": "MIT",
10468
+ "dependencies": {
10469
+ "prosemirror-state": "^1.4.3",
10470
+ "prosemirror-view": "^1.33.8"
10471
+ },
10472
+ "funding": {
10473
+ "url": "https://github.com/sponsors/ocavue"
10474
+ }
10475
+ },
10476
+ "node_modules/prosemirror-schema-list": {
10477
+ "version": "1.5.1",
10478
+ "resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.5.1.tgz",
10479
+ "integrity": "sha512-927lFx/uwyQaGwJxLWCZRkjXG0p48KpMj6ueoYiu4JX05GGuGcgzAy62dfiV8eFZftgyBUvLx76RsMe20fJl+Q==",
10480
+ "license": "MIT",
10481
+ "dependencies": {
10482
+ "prosemirror-model": "^1.0.0",
10483
+ "prosemirror-state": "^1.0.0",
10484
+ "prosemirror-transform": "^1.7.3"
10485
+ }
10486
+ },
10487
+ "node_modules/prosemirror-state": {
10488
+ "version": "1.4.4",
10489
+ "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.4.tgz",
10490
+ "integrity": "sha512-6jiYHH2CIGbCfnxdHbXZ12gySFY/fz/ulZE333G6bPqIZ4F+TXo9ifiR86nAHpWnfoNjOb3o5ESi7J8Uz1jXHw==",
10491
+ "license": "MIT",
10492
+ "dependencies": {
10493
+ "prosemirror-model": "^1.0.0",
10494
+ "prosemirror-transform": "^1.0.0",
10495
+ "prosemirror-view": "^1.27.0"
10496
+ }
10497
+ },
10498
+ "node_modules/prosemirror-tables": {
10499
+ "version": "1.8.5",
10500
+ "resolved": "https://registry.npmjs.org/prosemirror-tables/-/prosemirror-tables-1.8.5.tgz",
10501
+ "integrity": "sha512-V/0cDCsHKHe/tfWkeCmthNUcEp1IVO3p6vwN8XtwE9PZQLAZJigbw3QoraAdfJPir4NKJtNvOB8oYGKRl+t0Dw==",
10502
+ "license": "MIT",
10503
+ "dependencies": {
10504
+ "prosemirror-keymap": "^1.2.3",
10505
+ "prosemirror-model": "^1.25.4",
10506
+ "prosemirror-state": "^1.4.4",
10507
+ "prosemirror-transform": "^1.10.5",
10508
+ "prosemirror-view": "^1.41.4"
10509
+ }
10510
+ },
10511
+ "node_modules/prosemirror-transform": {
10512
+ "version": "1.12.2",
10513
+ "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.12.2.tgz",
10514
+ "integrity": "sha512-PE/aY0HEY4zczvmqrilgkUK/WautF0chvMqkmM/iN5/aPHvwrCWaQZjS6CIZp+K84YrvPFqrL+YArrfJX8xX7g==",
10515
+ "license": "MIT",
10516
+ "dependencies": {
10517
+ "prosemirror-model": "^1.21.0"
10518
+ }
10519
+ },
10520
+ "node_modules/prosemirror-view": {
10521
+ "version": "1.42.6",
10522
+ "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.42.6.tgz",
10523
+ "integrity": "sha512-3g25f6hKV2bBxo3puH3EcYWmmVNSH0iWmNsMVT7sugDSpA025jgpOLarcDWr39SdzPjYMaiYtRdNtXialPSjEQ==",
10524
+ "license": "MIT",
10525
+ "dependencies": {
10526
+ "prosemirror-model": "^1.25.12",
10527
+ "prosemirror-state": "^1.0.0",
10528
+ "prosemirror-transform": "^1.1.0"
10529
+ }
10530
+ },
10206
10531
  "node_modules/protobufjs": {
10207
10532
  "version": "7.6.6",
10208
10533
  "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.6.6.tgz",
@@ -10507,6 +10832,21 @@
10507
10832
  "url": "https://opencollective.com/unified"
10508
10833
  }
10509
10834
  },
10835
+ "node_modules/remark-inline-links": {
10836
+ "version": "7.0.0",
10837
+ "resolved": "https://registry.npmjs.org/remark-inline-links/-/remark-inline-links-7.0.0.tgz",
10838
+ "integrity": "sha512-4uj1pPM+F495ySZhTIB6ay2oSkTsKgmYaKk/q5HIdhX2fuyLEegpjWa0VdJRJ01sgOqAFo7MBKdDUejIYBMVMQ==",
10839
+ "license": "MIT",
10840
+ "dependencies": {
10841
+ "@types/mdast": "^4.0.0",
10842
+ "mdast-util-definitions": "^6.0.0",
10843
+ "unist-util-visit": "^5.0.0"
10844
+ },
10845
+ "funding": {
10846
+ "type": "opencollective",
10847
+ "url": "https://opencollective.com/unified"
10848
+ }
10849
+ },
10510
10850
  "node_modules/remark-mdx": {
10511
10851
  "version": "3.1.1",
10512
10852
  "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.1.tgz",
@@ -10624,6 +10964,12 @@
10624
10964
  "@rolldown/binding-win32-x64-msvc": "1.2.12"
10625
10965
  }
10626
10966
  },
10967
+ "node_modules/rope-sequence": {
10968
+ "version": "1.3.4",
10969
+ "resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.4.tgz",
10970
+ "integrity": "sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==",
10971
+ "license": "MIT"
10972
+ },
10627
10973
  "node_modules/rou3": {
10628
10974
  "version": "0.8.1",
10629
10975
  "resolved": "https://registry.npmjs.org/rou3/-/rou3-0.8.1.tgz",
@@ -11946,6 +12292,12 @@
11946
12292
  }
11947
12293
  }
11948
12294
  },
12295
+ "node_modules/w3c-keyname": {
12296
+ "version": "2.2.8",
12297
+ "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz",
12298
+ "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==",
12299
+ "license": "MIT"
12300
+ },
11949
12301
  "node_modules/web-namespaces": {
11950
12302
  "version": "2.0.1",
11951
12303
  "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz",
@@ -12116,17 +12468,17 @@
12116
12468
  },
12117
12469
  "packages/crouter-api": {
12118
12470
  "name": "@north-light/api",
12119
- "version": "0.3.508",
12471
+ "version": "0.3.510",
12120
12472
  "license": "UNLICENSED"
12121
12473
  },
12122
12474
  "packages/crouter-env-docker": {
12123
12475
  "name": "@north-light/env-docker",
12124
- "version": "0.3.508",
12476
+ "version": "0.3.510",
12125
12477
  "license": "UNLICENSED"
12126
12478
  },
12127
12479
  "packages/crouter-identity": {
12128
12480
  "name": "@north-light/identity",
12129
- "version": "0.3.508",
12481
+ "version": "0.3.510",
12130
12482
  "license": "UNLICENSED",
12131
12483
  "dependencies": {
12132
12484
  "jose": "^6.2.1"
@@ -12134,20 +12486,20 @@
12134
12486
  },
12135
12487
  "packages/crouter-plugin": {
12136
12488
  "name": "@north-light/plugin",
12137
- "version": "0.3.508",
12489
+ "version": "0.3.510",
12138
12490
  "license": "UNLICENSED",
12139
12491
  "dependencies": {
12140
- "@north-light/api": "0.3.508",
12141
- "@north-light/identity": "0.3.508"
12492
+ "@north-light/api": "0.3.510",
12493
+ "@north-light/identity": "0.3.510"
12142
12494
  }
12143
12495
  },
12144
12496
  "packages/crouter-sdk": {
12145
12497
  "name": "@north-light/sdk",
12146
- "version": "0.3.508",
12498
+ "version": "0.3.510",
12147
12499
  "license": "UNLICENSED",
12148
12500
  "dependencies": {
12149
- "@north-light/api": "0.3.508",
12150
- "@north-light/identity": "0.3.508",
12501
+ "@north-light/api": "0.3.510",
12502
+ "@north-light/identity": "0.3.510",
12151
12503
  "jose": "^6.2.1"
12152
12504
  },
12153
12505
  "bin": {
@@ -1,8 +0,0 @@
1
- export interface DocPageInput {
2
- /** Canonical `<owner>/<name>`. */
3
- name: string;
4
- revision: number;
5
- body: string;
6
- }
7
- /** The complete HTML page for one document revision. */
8
- export declare function renderDocumentPage(doc: DocPageInput): string;