@pelotto-tech/bellwether 0.0.0-stage → 0.1.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 (114) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +229 -2
  3. package/dist/agents/claude.d.ts +8 -0
  4. package/dist/agents/claude.js +63 -0
  5. package/dist/agents/claude.js.map +1 -0
  6. package/dist/agents/copilot.d.ts +7 -0
  7. package/dist/agents/copilot.js +39 -0
  8. package/dist/agents/copilot.js.map +1 -0
  9. package/dist/agents/index.d.ts +5 -0
  10. package/dist/agents/index.js +8 -0
  11. package/dist/agents/index.js.map +1 -0
  12. package/dist/agents/paths.d.ts +2 -0
  13. package/dist/agents/paths.js +5 -0
  14. package/dist/agents/paths.js.map +1 -0
  15. package/dist/agents/types.d.ts +29 -0
  16. package/dist/agents/types.js +2 -0
  17. package/dist/agents/types.js.map +1 -0
  18. package/dist/index.d.ts +5 -0
  19. package/dist/index.js +4 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/install.d.ts +38 -0
  22. package/dist/install.js +104 -0
  23. package/dist/install.js.map +1 -0
  24. package/dist/json-file.d.ts +12 -0
  25. package/dist/json-file.js +33 -0
  26. package/dist/json-file.js.map +1 -0
  27. package/dist/main.d.ts +2 -0
  28. package/dist/main.js +75 -0
  29. package/dist/main.js.map +1 -0
  30. package/dist/roles.d.ts +3 -0
  31. package/dist/roles.js +13 -0
  32. package/dist/roles.js.map +1 -0
  33. package/dist/run.d.ts +9 -0
  34. package/dist/run.js +41 -0
  35. package/dist/run.js.map +1 -0
  36. package/dist/skill.d.ts +9 -0
  37. package/dist/skill.js +65 -0
  38. package/dist/skill.js.map +1 -0
  39. package/package.json +52 -3
  40. package/runtime/adapter/dist/actions.d.ts +15 -0
  41. package/runtime/adapter/dist/actions.js +7 -0
  42. package/runtime/adapter/dist/actions.js.map +1 -0
  43. package/runtime/adapter/dist/bin.d.ts +2 -0
  44. package/runtime/adapter/dist/bin.js +121 -0
  45. package/runtime/adapter/dist/bin.js.map +1 -0
  46. package/runtime/adapter/dist/config.d.ts +41 -0
  47. package/runtime/adapter/dist/config.js +71 -0
  48. package/runtime/adapter/dist/config.js.map +1 -0
  49. package/runtime/adapter/dist/core.d.ts +8 -0
  50. package/runtime/adapter/dist/core.js +10 -0
  51. package/runtime/adapter/dist/core.js.map +1 -0
  52. package/runtime/adapter/dist/herdr/connection.d.ts +34 -0
  53. package/runtime/adapter/dist/herdr/connection.js +137 -0
  54. package/runtime/adapter/dist/herdr/connection.js.map +1 -0
  55. package/runtime/adapter/dist/herdr/index.d.ts +5 -0
  56. package/runtime/adapter/dist/herdr/index.js +5 -0
  57. package/runtime/adapter/dist/herdr/index.js.map +1 -0
  58. package/runtime/adapter/dist/herdr/mapper.d.ts +27 -0
  59. package/runtime/adapter/dist/herdr/mapper.js +141 -0
  60. package/runtime/adapter/dist/herdr/mapper.js.map +1 -0
  61. package/runtime/adapter/dist/herdr/paths.d.ts +29 -0
  62. package/runtime/adapter/dist/herdr/paths.js +89 -0
  63. package/runtime/adapter/dist/herdr/paths.js.map +1 -0
  64. package/runtime/adapter/dist/herdr/protocol.d.ts +102 -0
  65. package/runtime/adapter/dist/herdr/protocol.js +19 -0
  66. package/runtime/adapter/dist/herdr/protocol.js.map +1 -0
  67. package/runtime/adapter/dist/herdr/source.d.ts +99 -0
  68. package/runtime/adapter/dist/herdr/source.js +316 -0
  69. package/runtime/adapter/dist/herdr/source.js.map +1 -0
  70. package/runtime/adapter/dist/index.d.ts +6 -0
  71. package/runtime/adapter/dist/index.js +7 -0
  72. package/runtime/adapter/dist/index.js.map +1 -0
  73. package/runtime/adapter/dist/mock.d.ts +33 -0
  74. package/runtime/adapter/dist/mock.js +130 -0
  75. package/runtime/adapter/dist/mock.js.map +1 -0
  76. package/runtime/adapter/dist/random.d.ts +3 -0
  77. package/runtime/adapter/dist/random.js +18 -0
  78. package/runtime/adapter/dist/random.js.map +1 -0
  79. package/runtime/adapter/dist/recording.d.ts +22 -0
  80. package/runtime/adapter/dist/recording.js +52 -0
  81. package/runtime/adapter/dist/recording.js.map +1 -0
  82. package/runtime/adapter/dist/roles.d.ts +16 -0
  83. package/runtime/adapter/dist/roles.js +21 -0
  84. package/runtime/adapter/dist/roles.js.map +1 -0
  85. package/runtime/adapter/dist/rollup.d.ts +5 -0
  86. package/runtime/adapter/dist/rollup.js +18 -0
  87. package/runtime/adapter/dist/rollup.js.map +1 -0
  88. package/runtime/adapter/dist/scrub.d.ts +9 -0
  89. package/runtime/adapter/dist/scrub.js +56 -0
  90. package/runtime/adapter/dist/scrub.js.map +1 -0
  91. package/runtime/adapter/dist/server.d.ts +47 -0
  92. package/runtime/adapter/dist/server.js +119 -0
  93. package/runtime/adapter/dist/server.js.map +1 -0
  94. package/runtime/adapter/dist/source.d.ts +20 -0
  95. package/runtime/adapter/dist/source.js +14 -0
  96. package/runtime/adapter/dist/source.js.map +1 -0
  97. package/runtime/adapter/dist/types.d.ts +66 -0
  98. package/runtime/adapter/dist/types.js +23 -0
  99. package/runtime/adapter/dist/types.js.map +1 -0
  100. package/runtime/adapter/dist/world.d.ts +9 -0
  101. package/runtime/adapter/dist/world.js +64 -0
  102. package/runtime/adapter/dist/world.js.map +1 -0
  103. package/runtime/adapter/package.json +37 -0
  104. package/runtime/renderer/dist/assets/BitmapFont-CrMu5gVf.js +6 -0
  105. package/runtime/renderer/dist/assets/CanvasRenderer-BJUwGe2K.js +1 -0
  106. package/runtime/renderer/dist/assets/Filter-CYMWP98C.js +1 -0
  107. package/runtime/renderer/dist/assets/RenderTargetSystem-CUv6yCH8.js +184 -0
  108. package/runtime/renderer/dist/assets/WebGLRenderer-DT-aSeEc.js +156 -0
  109. package/runtime/renderer/dist/assets/WebGPURenderer-CV0poHB6.js +75 -0
  110. package/runtime/renderer/dist/assets/browserAll-BpE2Jy31.js +14 -0
  111. package/runtime/renderer/dist/assets/getTexelRangeRects-BCdgu8cV.js +195 -0
  112. package/runtime/renderer/dist/assets/index-BgIYSiaY.js +296 -0
  113. package/runtime/renderer/dist/assets/webworkerAll-DEtPMT-J.js +83 -0
  114. package/runtime/renderer/dist/index.html +36 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapper.js","sourceRoot":"","sources":["../../src/herdr/mapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ export declare const DEFAULT_SESSION = "default";
2
+ export interface PathEnv {
3
+ platform?: NodeJS.Platform;
4
+ env?: NodeJS.ProcessEnv;
5
+ home?: string;
6
+ }
7
+ /** Herdr config dir: `%APPDATA%\herdr` on Windows, `$XDG_CONFIG_HOME/herdr` or `~/.config/herdr` elsewhere. */
8
+ export declare function herdrConfigDir(e?: PathEnv): string;
9
+ /** Socket file path for a session (before Windows pipe prefixing). */
10
+ export declare function sessionSocketFile(session: string, e?: PathEnv): string;
11
+ /** What `net.connect` takes: the socket path on Unix, `\\.\pipe\<path>` on Windows. */
12
+ export declare function toConnectPath(socketFile: string, platform?: NodeJS.Platform): string;
13
+ export interface SessionTarget {
14
+ session: string;
15
+ connectPath: string;
16
+ }
17
+ /**
18
+ * Resolve one explicit target. Order mirrors Herdr: explicit socket, explicit
19
+ * session, HERDR_SOCKET_PATH, HERDR_SESSION, default.
20
+ */
21
+ export declare function resolveTarget(opts: {
22
+ session?: string;
23
+ socket?: string;
24
+ }, e?: PathEnv): SessionTarget;
25
+ /**
26
+ * Enumerate running sessions: the default socket plus `sessions/<name>/herdr.sock`.
27
+ * On Windows a session is live when its pipe exists; elsewhere when the socket file exists.
28
+ */
29
+ export declare function discoverSessions(e?: PathEnv): Promise<SessionTarget[]>;
@@ -0,0 +1,89 @@
1
+ import { readdir, stat } from 'node:fs/promises';
2
+ import os from 'node:os';
3
+ import path from 'node:path';
4
+ export const DEFAULT_SESSION = 'default';
5
+ const PIPE_PREFIX = '\\\\.\\pipe\\';
6
+ /** Herdr config dir: `%APPDATA%\herdr` on Windows, `$XDG_CONFIG_HOME/herdr` or `~/.config/herdr` elsewhere. */
7
+ export function herdrConfigDir(e = {}) {
8
+ const platform = e.platform ?? process.platform;
9
+ const env = e.env ?? process.env;
10
+ const home = e.home ?? os.homedir();
11
+ const p = platform === 'win32' ? path.win32 : path.posix;
12
+ if (platform === 'win32')
13
+ return p.join(env.APPDATA ?? p.join(home, 'AppData', 'Roaming'), 'herdr');
14
+ return p.join(env.XDG_CONFIG_HOME ?? p.join(home, '.config'), 'herdr');
15
+ }
16
+ /** Socket file path for a session (before Windows pipe prefixing). */
17
+ export function sessionSocketFile(session, e = {}) {
18
+ const platform = e.platform ?? process.platform;
19
+ const p = platform === 'win32' ? path.win32 : path.posix;
20
+ const dir = herdrConfigDir(e);
21
+ return session === DEFAULT_SESSION ? p.join(dir, 'herdr.sock') : p.join(dir, 'sessions', session, 'herdr.sock');
22
+ }
23
+ /** What `net.connect` takes: the socket path on Unix, `\\.\pipe\<path>` on Windows. */
24
+ export function toConnectPath(socketFile, platform = process.platform) {
25
+ if (platform !== 'win32' || socketFile.startsWith(PIPE_PREFIX))
26
+ return socketFile;
27
+ return PIPE_PREFIX + socketFile;
28
+ }
29
+ /**
30
+ * Resolve one explicit target. Order mirrors Herdr: explicit socket, explicit
31
+ * session, HERDR_SOCKET_PATH, HERDR_SESSION, default.
32
+ */
33
+ export function resolveTarget(opts, e = {}) {
34
+ const platform = e.platform ?? process.platform;
35
+ const env = e.env ?? process.env;
36
+ if (opts.socket)
37
+ return { session: opts.session ?? 'custom', connectPath: toConnectPath(opts.socket, platform) };
38
+ if (opts.session)
39
+ return { session: opts.session, connectPath: toConnectPath(sessionSocketFile(opts.session, e), platform) };
40
+ if (env.HERDR_SOCKET_PATH)
41
+ return { session: env.HERDR_SESSION ?? DEFAULT_SESSION, connectPath: toConnectPath(env.HERDR_SOCKET_PATH, platform) };
42
+ const s = env.HERDR_SESSION ?? DEFAULT_SESSION;
43
+ return { session: s, connectPath: toConnectPath(sessionSocketFile(s, e), platform) };
44
+ }
45
+ /**
46
+ * Enumerate running sessions: the default socket plus `sessions/<name>/herdr.sock`.
47
+ * On Windows a session is live when its pipe exists; elsewhere when the socket file exists.
48
+ */
49
+ export async function discoverSessions(e = {}) {
50
+ const platform = e.platform ?? process.platform;
51
+ const dir = herdrConfigDir(e);
52
+ const p = platform === 'win32' ? path.win32 : path.posix;
53
+ const names = [DEFAULT_SESSION];
54
+ try {
55
+ for (const d of await readdir(p.join(dir, 'sessions'), { withFileTypes: true }))
56
+ if (d.isDirectory())
57
+ names.push(d.name);
58
+ }
59
+ catch {
60
+ /* no named sessions */
61
+ }
62
+ let pipes;
63
+ if (platform === 'win32') {
64
+ try {
65
+ pipes = new Set((await readdir(PIPE_PREFIX)).map((n) => n.toLowerCase()));
66
+ }
67
+ catch {
68
+ pipes = new Set();
69
+ }
70
+ }
71
+ const out = [];
72
+ for (const name of names) {
73
+ const file = sessionSocketFile(name, e);
74
+ const live = pipes ? pipes.has(file.toLowerCase()) : await exists(file);
75
+ if (live)
76
+ out.push({ session: name, connectPath: toConnectPath(file, platform) });
77
+ }
78
+ return out;
79
+ }
80
+ async function exists(f) {
81
+ try {
82
+ await stat(f);
83
+ return true;
84
+ }
85
+ catch {
86
+ return false;
87
+ }
88
+ }
89
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/herdr/paths.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,102 @@
1
+ export type AgentStatus = 'idle' | 'working' | 'blocked' | 'done' | 'unknown';
2
+ export interface WorkspaceWorktreeInfo {
3
+ repo_key: string;
4
+ repo_name: string;
5
+ repo_root: string;
6
+ checkout_path: string;
7
+ is_linked_worktree: boolean;
8
+ }
9
+ export interface WorkspaceInfo {
10
+ workspace_id: string;
11
+ number: number;
12
+ label: string;
13
+ focused: boolean;
14
+ pane_count: number;
15
+ tab_count: number;
16
+ active_tab_id: string;
17
+ agent_status: AgentStatus;
18
+ tokens?: Record<string, string>;
19
+ worktree?: WorkspaceWorktreeInfo | null;
20
+ }
21
+ export interface PaneInfo {
22
+ pane_id: string;
23
+ terminal_id: string;
24
+ workspace_id: string;
25
+ tab_id: string;
26
+ focused: boolean;
27
+ agent_status: AgentStatus;
28
+ revision: number;
29
+ agent?: string | null;
30
+ display_agent?: string | null;
31
+ title?: string | null;
32
+ label?: string | null;
33
+ cwd?: string | null;
34
+ state_labels?: Record<string, string>;
35
+ tokens?: Record<string, string>;
36
+ }
37
+ export interface AgentInfo extends PaneInfo {
38
+ name?: string | null;
39
+ state_change_seq?: number;
40
+ }
41
+ export interface WorktreeInfo {
42
+ branch?: string | null;
43
+ path?: string;
44
+ label?: string;
45
+ open_workspace_id?: string | null;
46
+ [k: string]: unknown;
47
+ }
48
+ export interface SessionSnapshot {
49
+ version: string;
50
+ protocol: number;
51
+ workspaces: WorkspaceInfo[];
52
+ tabs: unknown[];
53
+ panes: PaneInfo[];
54
+ layouts: unknown[];
55
+ agents: AgentInfo[];
56
+ focused_workspace_id?: string | null;
57
+ focused_tab_id?: string | null;
58
+ focused_pane_id?: string | null;
59
+ }
60
+ export interface Request {
61
+ id: string;
62
+ method: string;
63
+ params: Record<string, unknown>;
64
+ }
65
+ export interface SuccessResponse {
66
+ id: string;
67
+ result: {
68
+ type: string;
69
+ [k: string]: unknown;
70
+ };
71
+ }
72
+ export interface ErrorResponse {
73
+ id: string;
74
+ error: {
75
+ code: string;
76
+ message: string;
77
+ };
78
+ }
79
+ /** Pushed on a subscription connection. Lifecycle kinds use underscores
80
+ * (`pane_closed`), subscription kinds use dots (`pane.agent_status_changed`). */
81
+ export interface EventLine {
82
+ event: string;
83
+ data: Record<string, unknown> & {
84
+ type?: string;
85
+ };
86
+ }
87
+ export type Line = SuccessResponse | ErrorResponse | EventLine;
88
+ export declare function isEvent(l: Line): l is EventLine;
89
+ export declare function isError(l: Line): l is ErrorResponse;
90
+ export interface AgentStatusChanged {
91
+ pane_id: string;
92
+ workspace_id: string;
93
+ agent_status: AgentStatus;
94
+ agent?: string | null;
95
+ display_agent?: string | null;
96
+ title?: string | null;
97
+ state_labels?: Record<string, string>;
98
+ }
99
+ /** Global lifecycle subscriptions. `pane.agent_status_changed` is per pane and
100
+ * is opened separately (PLAN §1 gotcha 1). */
101
+ export declare const LIFECYCLE_SUBSCRIPTIONS: readonly ["workspace.created", "workspace.updated", "workspace.metadata_updated", "workspace.renamed", "workspace.closed", "worktree.created", "worktree.opened", "worktree.removed", "tab.created", "tab.closed", "pane.created", "pane.closed", "pane.updated", "pane.moved", "pane.exited", "pane.agent_detected"];
102
+ export declare const AGENT_STATUS_CHANGED = "pane.agent_status_changed";
@@ -0,0 +1,19 @@
1
+ // Subset of the Herdr TUI socket protocol (protocol 22) that Bellwether reads.
2
+ // Source of truth: docs/research/herdr-api.schema.json.
3
+ export function isEvent(l) {
4
+ return typeof l.event === 'string';
5
+ }
6
+ export function isError(l) {
7
+ return typeof l.error === 'object' && l.error !== null;
8
+ }
9
+ /** Global lifecycle subscriptions. `pane.agent_status_changed` is per pane and
10
+ * is opened separately (PLAN §1 gotcha 1). */
11
+ export const LIFECYCLE_SUBSCRIPTIONS = [
12
+ 'workspace.created', 'workspace.updated', 'workspace.metadata_updated', 'workspace.renamed',
13
+ 'workspace.closed',
14
+ 'worktree.created', 'worktree.opened', 'worktree.removed',
15
+ 'tab.created', 'tab.closed',
16
+ 'pane.created', 'pane.closed', 'pane.updated', 'pane.moved', 'pane.exited', 'pane.agent_detected',
17
+ ];
18
+ export const AGENT_STATUS_CHANGED = 'pane.agent_status_changed';
19
+ //# sourceMappingURL=protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/herdr/protocol.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,wDAAwD;AA6FxD,MAAM,UAAU,OAAO,CAAC,CAAO;IAC7B,OAAO,OAAQ,CAAe,CAAC,KAAK,KAAK,QAAQ,CAAC;AACpD,CAAC;AACD,MAAM,UAAU,OAAO,CAAC,CAAO;IAC7B,OAAO,OAAQ,CAAmB,CAAC,KAAK,KAAK,QAAQ,IAAK,CAAmB,CAAC,KAAK,KAAK,IAAI,CAAC;AAC/F,CAAC;AAYD;+CAC+C;AAC/C,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,mBAAmB,EAAE,mBAAmB,EAAE,4BAA4B,EAAE,mBAAmB;IAC3F,kBAAkB;IAClB,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB;IACzD,aAAa,EAAE,YAAY;IAC3B,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,qBAAqB;CACzF,CAAC;AAEX,MAAM,CAAC,MAAM,oBAAoB,GAAG,2BAA2B,CAAC"}
@@ -0,0 +1,99 @@
1
+ import { EventEmitter } from 'node:events';
2
+ import type { Action } from '../actions.js';
3
+ import type { WorldSource } from '../source.js';
4
+ import type { Party, World } from '../types.js';
5
+ import { type Connector } from './connection.js';
6
+ import { type SessionTarget } from './paths.js';
7
+ export interface SessionSourceOptions {
8
+ target: SessionTarget;
9
+ connector?: Connector;
10
+ now?: () => number;
11
+ /** Coalesce bursts of lifecycle events into one re-read. */
12
+ refreshDebounceMs?: number;
13
+ /** Reconnect backoff bounds. */
14
+ minBackoffMs?: number;
15
+ maxBackoffMs?: number;
16
+ log?: (msg: string) => void;
17
+ }
18
+ /**
19
+ * Live source for one Herdr session.
20
+ *
21
+ * Follows the recovery rules in docs/research/socket-api.mdx: subscribe first,
22
+ * then read `session.snapshot` on another connection; lifecycle events only
23
+ * invalidate and trigger a serialized re-read; `events_lost` or a dropped
24
+ * connection means reconnect, resubscribe and re-read. Agent status changes
25
+ * arrive on a second, per-pane subscription that is reopened whenever the pane
26
+ * set changes.
27
+ */
28
+ export declare class HerdrSessionSource extends EventEmitter implements WorldSource {
29
+ private readonly opts;
30
+ readonly session: string;
31
+ private parties;
32
+ private branches;
33
+ private lifecycle?;
34
+ private status?;
35
+ private rpc?;
36
+ private statusPanes;
37
+ private running;
38
+ private hasSnapshot;
39
+ private refreshing;
40
+ private dirty;
41
+ private refreshTimer?;
42
+ private reconnectTimer?;
43
+ private backoff;
44
+ private readonly now;
45
+ private readonly log;
46
+ private readonly ctx;
47
+ constructor(opts: SessionSourceOptions);
48
+ /** Current parties for this session (read-only view). */
49
+ get current(): Readonly<Record<string, Party>>;
50
+ start(): Promise<void>;
51
+ stop(): Promise<void>;
52
+ private emitDelta;
53
+ private connect;
54
+ private onStreamError;
55
+ private onStreamClosed;
56
+ private scheduleReconnect;
57
+ private onLifecycle;
58
+ private onStatus;
59
+ private scheduleRefresh;
60
+ /** Serialized authoritative re-read. Events that land mid-read trigger one more read. */
61
+ refresh(): Promise<void>;
62
+ private rpcConn;
63
+ /** Actions for this session, mapped to Herdr's request/response API. */
64
+ readonly actions: Action;
65
+ /** Whether this session currently has a member in `paneId`. */
66
+ hasPane(paneId: string): boolean;
67
+ private snapshot;
68
+ private applySnapshot;
69
+ private syncStatusSubscription;
70
+ }
71
+ export interface LiveOptions {
72
+ /** `'all'` discovers running sessions; otherwise explicit names. Default: resolve one target from env. */
73
+ sessions?: 'all' | string[];
74
+ socket?: string;
75
+ machine?: string;
76
+ connector?: Connector;
77
+ now?: () => number;
78
+ refreshDebounceMs?: number;
79
+ minBackoffMs?: number;
80
+ maxBackoffMs?: number;
81
+ log?: (msg: string) => void;
82
+ }
83
+ /** Live Herdr source across one or more sessions, merged into one world. */
84
+ export declare class HerdrSource extends EventEmitter implements WorldSource {
85
+ private readonly opts;
86
+ private children;
87
+ private readonly machine;
88
+ constructor(opts?: LiveOptions);
89
+ targets(): Promise<SessionTarget[]>;
90
+ start(): Promise<void>;
91
+ stop(): Promise<void>;
92
+ /**
93
+ * Routes to the session that owns the pane. Pane ids are session-local, so with
94
+ * several sessions the first one holding the id wins.
95
+ */
96
+ readonly actions: Action;
97
+ private route;
98
+ world(): World;
99
+ }