arcie 0.1.3 → 0.1.5

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 (156) hide show
  1. package/README.md +34 -6
  2. package/dist/agent/index.d.ts +6 -3
  3. package/dist/agent/index.js +6 -6
  4. package/dist/agent/index.js.map +1 -1
  5. package/dist/auth/index.d.ts +6 -5
  6. package/dist/auth/index.js +8 -17
  7. package/dist/auth/index.js.map +1 -1
  8. package/dist/build-TWNCPXBU.js +82 -0
  9. package/dist/build-TWNCPXBU.js.map +1 -0
  10. package/dist/channels/index.d.ts +8 -5
  11. package/dist/channels/index.js +10 -12
  12. package/dist/channels/index.js.map +1 -1
  13. package/dist/chunk-3CNQ6HQV.js +12 -0
  14. package/dist/chunk-3CNQ6HQV.js.map +1 -0
  15. package/dist/chunk-4L7WVCTU.js +12 -0
  16. package/dist/chunk-4L7WVCTU.js.map +1 -0
  17. package/dist/chunk-4WSILP75.js +1774 -0
  18. package/dist/chunk-4WSILP75.js.map +1 -0
  19. package/dist/chunk-6XETPLIF.js +176 -0
  20. package/dist/chunk-6XETPLIF.js.map +1 -0
  21. package/dist/chunk-CKHBEZCT.js +24 -0
  22. package/dist/chunk-CKHBEZCT.js.map +1 -0
  23. package/dist/chunk-FQ7KDNV5.js +12 -0
  24. package/dist/chunk-FQ7KDNV5.js.map +1 -0
  25. package/dist/chunk-HVBDOHTL.js +148 -0
  26. package/dist/chunk-HVBDOHTL.js.map +1 -0
  27. package/dist/chunk-HWD2Z2CH.js +742 -0
  28. package/dist/chunk-HWD2Z2CH.js.map +1 -0
  29. package/dist/chunk-KVSX4MLK.js +139 -0
  30. package/dist/chunk-KVSX4MLK.js.map +1 -0
  31. package/dist/chunk-L3BTL5FM.js +39 -0
  32. package/dist/chunk-L3BTL5FM.js.map +1 -0
  33. package/dist/chunk-LQC65UHE.js +34 -0
  34. package/dist/chunk-LQC65UHE.js.map +1 -0
  35. package/dist/chunk-N5R3TEEZ.js +15 -0
  36. package/dist/chunk-N5R3TEEZ.js.map +1 -0
  37. package/dist/chunk-PHTJLJOV.js +25 -0
  38. package/dist/chunk-PHTJLJOV.js.map +1 -0
  39. package/dist/chunk-QE46QFID.js +92 -0
  40. package/dist/chunk-QE46QFID.js.map +1 -0
  41. package/dist/chunk-SGWQZZ2A.js +54 -0
  42. package/dist/chunk-SGWQZZ2A.js.map +1 -0
  43. package/dist/chunk-WAD7VLNI.js +51 -0
  44. package/dist/chunk-WAD7VLNI.js.map +1 -0
  45. package/dist/chunk-XOFWQUOO.js +30 -0
  46. package/dist/chunk-XOFWQUOO.js.map +1 -0
  47. package/dist/chunk-ZJNHQXMO.js +20 -0
  48. package/dist/chunk-ZJNHQXMO.js.map +1 -0
  49. package/dist/cli/index.d.ts +7 -2
  50. package/dist/cli/index.js +171 -41
  51. package/dist/cli/index.js.map +1 -1
  52. package/dist/context/index.d.ts +14 -11
  53. package/dist/context/index.js +22 -37
  54. package/dist/context/index.js.map +1 -1
  55. package/dist/dev-ZZDVOWUZ.js +1967 -0
  56. package/dist/dev-ZZDVOWUZ.js.map +1 -0
  57. package/dist/discover/index.d.ts +17 -7
  58. package/dist/discover/index.js +6 -132
  59. package/dist/discover/index.js.map +1 -1
  60. package/dist/hooks/index.d.ts +6 -3
  61. package/dist/hooks/index.js +6 -6
  62. package/dist/hooks/index.js.map +1 -1
  63. package/dist/index-CElLRVTP.d.ts +136 -0
  64. package/dist/index.d.ts +297 -18
  65. package/dist/index.js +160 -13
  66. package/dist/index.js.map +1 -1
  67. package/dist/init-5F7CIVLN.js +822 -0
  68. package/dist/init-5F7CIVLN.js.map +1 -0
  69. package/dist/instructions/index.d.ts +7 -4
  70. package/dist/instructions/index.js +8 -32
  71. package/dist/instructions/index.js.map +1 -1
  72. package/dist/protocol/events.d.ts +47 -39
  73. package/dist/protocol/events.js +46 -45
  74. package/dist/protocol/events.js.map +1 -1
  75. package/dist/runner/index.d.ts +4 -18
  76. package/dist/runner/index.js +11 -277
  77. package/dist/runner/index.js.map +1 -1
  78. package/dist/scaffold-web-chat-OQL5C2GK.js +7 -0
  79. package/dist/scaffold-web-chat-OQL5C2GK.js.map +1 -0
  80. package/dist/schedules/index.d.ts +6 -3
  81. package/dist/schedules/index.js +6 -6
  82. package/dist/schedules/index.js.map +1 -1
  83. package/dist/skills/index.d.ts +7 -4
  84. package/dist/skills/index.js +8 -27
  85. package/dist/skills/index.js.map +1 -1
  86. package/dist/tools/index.d.ts +13 -3
  87. package/dist/tools/index.js +8 -9
  88. package/dist/tools/index.js.map +1 -1
  89. package/dist/types-DwxwdSa2.d.ts +151 -0
  90. package/docs/getting-started.md +2 -2
  91. package/docs/index.md +3 -2
  92. package/docs/project-layout.md +2 -2
  93. package/docs/subagents.md +95 -0
  94. package/package.json +15 -10
  95. package/templates/default/.env.local +12 -0
  96. package/templates/default/agent/agent.ts +2 -2
  97. package/templates/default/package.json +3 -3
  98. package/templates/web-chat/.env.local.example +4 -0
  99. package/templates/web-chat/README.md +51 -0
  100. package/templates/web-chat/app/api/chat/route.ts +43 -0
  101. package/templates/web-chat/app/globals.css +55 -0
  102. package/templates/web-chat/app/layout.tsx +15 -0
  103. package/templates/web-chat/app/page.tsx +9 -0
  104. package/templates/web-chat/components/chat.tsx +196 -0
  105. package/templates/web-chat/components/input-bar.tsx +74 -0
  106. package/templates/web-chat/components/message.tsx +63 -0
  107. package/templates/web-chat/components/tool-call.tsx +79 -0
  108. package/templates/web-chat/components/ui/button.tsx +46 -0
  109. package/templates/web-chat/components/ui/input.tsx +19 -0
  110. package/templates/web-chat/components.json +20 -0
  111. package/templates/web-chat/lib/stream.ts +41 -0
  112. package/templates/web-chat/lib/types.ts +61 -0
  113. package/templates/web-chat/lib/utils.ts +6 -0
  114. package/templates/web-chat/next.config.mjs +4 -0
  115. package/templates/web-chat/package.json +32 -0
  116. package/templates/web-chat/postcss.config.mjs +6 -0
  117. package/templates/web-chat/tailwind.config.ts +59 -0
  118. package/templates/web-chat/tsconfig.json +23 -0
  119. package/dist/agent/index.d.ts.map +0 -1
  120. package/dist/auth/index.d.ts.map +0 -1
  121. package/dist/channels/index.d.ts.map +0 -1
  122. package/dist/cli/banner.d.ts +0 -2
  123. package/dist/cli/banner.d.ts.map +0 -1
  124. package/dist/cli/banner.js +0 -10
  125. package/dist/cli/banner.js.map +0 -1
  126. package/dist/cli/build.d.ts +0 -5
  127. package/dist/cli/build.d.ts.map +0 -1
  128. package/dist/cli/build.js +0 -54
  129. package/dist/cli/build.js.map +0 -1
  130. package/dist/cli/dev.d.ts +0 -5
  131. package/dist/cli/dev.d.ts.map +0 -1
  132. package/dist/cli/dev.js +0 -74
  133. package/dist/cli/dev.js.map +0 -1
  134. package/dist/cli/index.d.ts.map +0 -1
  135. package/dist/cli/init.d.ts +0 -4
  136. package/dist/cli/init.d.ts.map +0 -1
  137. package/dist/cli/init.js +0 -75
  138. package/dist/cli/init.js.map +0 -1
  139. package/dist/context/index.d.ts.map +0 -1
  140. package/dist/discover/index.d.ts.map +0 -1
  141. package/dist/hooks/index.d.ts.map +0 -1
  142. package/dist/index.d.ts.map +0 -1
  143. package/dist/instructions/index.d.ts.map +0 -1
  144. package/dist/loader.d.ts +0 -7
  145. package/dist/loader.d.ts.map +0 -1
  146. package/dist/loader.js +0 -102
  147. package/dist/loader.js.map +0 -1
  148. package/dist/protocol/events.d.ts.map +0 -1
  149. package/dist/runner/index.d.ts.map +0 -1
  150. package/dist/schedules/index.d.ts.map +0 -1
  151. package/dist/skills/index.d.ts.map +0 -1
  152. package/dist/tools/index.d.ts.map +0 -1
  153. package/dist/types.d.ts +0 -118
  154. package/dist/types.d.ts.map +0 -1
  155. package/dist/types.js +0 -2
  156. package/dist/types.js.map +0 -1
@@ -0,0 +1,51 @@
1
+ // src/context/index.ts
2
+ var currentSession = null;
3
+ var currentTurn = null;
4
+ var sharedContext = /* @__PURE__ */ new Map();
5
+ function getSession() {
6
+ return currentSession;
7
+ }
8
+ function getTurn() {
9
+ return currentTurn;
10
+ }
11
+ function setSession(session) {
12
+ currentSession = session;
13
+ }
14
+ function setTurn(turn) {
15
+ currentTurn = turn;
16
+ }
17
+ function getContext(key) {
18
+ return sharedContext.get(key);
19
+ }
20
+ function requireContext(key) {
21
+ const value = sharedContext.get(key);
22
+ if (value === void 0) {
23
+ throw new Error(`Required context key not found: ${key}`);
24
+ }
25
+ return value;
26
+ }
27
+ function hasContext(key) {
28
+ return sharedContext.has(key);
29
+ }
30
+ function setContext(key, value) {
31
+ sharedContext.set(key, value);
32
+ }
33
+ function ensureContext(key, factory) {
34
+ if (!sharedContext.has(key)) {
35
+ sharedContext.set(key, factory());
36
+ }
37
+ return sharedContext.get(key);
38
+ }
39
+
40
+ export {
41
+ getSession,
42
+ getTurn,
43
+ setSession,
44
+ setTurn,
45
+ getContext,
46
+ requireContext,
47
+ hasContext,
48
+ setContext,
49
+ ensureContext
50
+ };
51
+ //# sourceMappingURL=chunk-WAD7VLNI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/context/index.ts"],"sourcesContent":["import type { Session, TurnContext } from \"../types\";\n\nlet currentSession: Session | null = null;\nlet currentTurn: TurnContext | null = null;\nconst sharedContext = new Map<string, unknown>();\n\nexport function getSession(): Session | null {\n return currentSession;\n}\n\nexport function getTurn(): TurnContext | null {\n return currentTurn;\n}\n\nexport function setSession(session: Session): void {\n currentSession = session;\n}\n\nexport function setTurn(turn: TurnContext): void {\n currentTurn = turn;\n}\n\nexport function getContext<T = unknown>(key: string): T | undefined {\n return sharedContext.get(key) as T | undefined;\n}\n\nexport function requireContext<T = unknown>(key: string): T {\n const value = sharedContext.get(key);\n if (value === undefined) {\n throw new Error(`Required context key not found: ${key}`);\n }\n return value as T;\n}\n\nexport function hasContext(key: string): boolean {\n return sharedContext.has(key);\n}\n\nexport function setContext(key: string, value: unknown): void {\n sharedContext.set(key, value);\n}\n\nexport function ensureContext<T>(\n key: string,\n factory: () => T\n): T {\n if (!sharedContext.has(key)) {\n sharedContext.set(key, factory());\n }\n return sharedContext.get(key) as T;\n}\n"],"mappings":";AAEA,IAAI,iBAAiC;AACrC,IAAI,cAAkC;AACtC,IAAM,gBAAgB,oBAAI,IAAqB;AAExC,SAAS,aAA6B;AAC3C,SAAO;AACT;AAEO,SAAS,UAA8B;AAC5C,SAAO;AACT;AAEO,SAAS,WAAW,SAAwB;AACjD,mBAAiB;AACnB;AAEO,SAAS,QAAQ,MAAyB;AAC/C,gBAAc;AAChB;AAEO,SAAS,WAAwB,KAA4B;AAClE,SAAO,cAAc,IAAI,GAAG;AAC9B;AAEO,SAAS,eAA4B,KAAgB;AAC1D,QAAM,QAAQ,cAAc,IAAI,GAAG;AACnC,MAAI,UAAU,QAAW;AACvB,UAAM,IAAI,MAAM,mCAAmC,GAAG,EAAE;AAAA,EAC1D;AACA,SAAO;AACT;AAEO,SAAS,WAAW,KAAsB;AAC/C,SAAO,cAAc,IAAI,GAAG;AAC9B;AAEO,SAAS,WAAW,KAAa,OAAsB;AAC5D,gBAAc,IAAI,KAAK,KAAK;AAC9B;AAEO,SAAS,cACd,KACA,SACG;AACH,MAAI,CAAC,cAAc,IAAI,GAAG,GAAG;AAC3B,kBAAc,IAAI,KAAK,QAAQ,CAAC;AAAA,EAClC;AACA,SAAO,cAAc,IAAI,GAAG;AAC9B;","names":[]}
@@ -0,0 +1,30 @@
1
+ // src/cli/banner.ts
2
+ import { readFileSync } from "fs";
3
+ import { resolve, dirname } from "path";
4
+ import { fileURLToPath } from "url";
5
+ import chalk from "chalk";
6
+ var __dirname = dirname(fileURLToPath(import.meta.url));
7
+ var _version = "0.0.0";
8
+ try {
9
+ const pkg = JSON.parse(readFileSync(resolve(__dirname, "../package.json"), "utf-8"));
10
+ _version = pkg.version;
11
+ } catch {
12
+ }
13
+ var ARCIE_WORDMARK = "arcie";
14
+ function version() {
15
+ return _version;
16
+ }
17
+ function arcieCliBanner() {
18
+ return `${chalk.bgBlack.white(` ${ARCIE_WORDMARK} `)} ${chalk.dim(`v${_version}`)}`;
19
+ }
20
+ function showHeader() {
21
+ console.log(` ${chalk.bold("arcie")} ${chalk.dim(`v${_version}`)}`);
22
+ console.log();
23
+ }
24
+
25
+ export {
26
+ version,
27
+ arcieCliBanner,
28
+ showHeader
29
+ };
30
+ //# sourceMappingURL=chunk-XOFWQUOO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/banner.ts"],"sourcesContent":["import { readFileSync } from \"node:fs\";\nimport { resolve, dirname } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport chalk from \"chalk\";\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\nlet _version = \"0.0.0\";\ntry {\n const pkg = JSON.parse(readFileSync(resolve(__dirname, \"../package.json\"), \"utf-8\"));\n _version = pkg.version;\n} catch {}\n\nexport const ARCIE_WORDMARK = \"arcie\";\n\nexport function version(): string {\n return _version;\n}\n\nexport function arcieCliBanner(): string {\n return `${chalk.bgBlack.white(` ${ARCIE_WORDMARK} `)} ${chalk.dim(`v${_version}`)}`;\n}\n\nexport function showHeader(): void {\n console.log(` ${chalk.bold(\"arcie\")} ${chalk.dim(`v${_version}`)}`);\n console.log();\n}\n\nexport function divider(): void {\n console.log();\n console.log(` ${chalk.dim(\"─\".repeat(50))}`);\n console.log();\n}\n"],"mappings":";AAAA,SAAS,oBAAoB;AAC7B,SAAS,SAAS,eAAe;AACjC,SAAS,qBAAqB;AAC9B,OAAO,WAAW;AAElB,IAAM,YAAY,QAAQ,cAAc,YAAY,GAAG,CAAC;AACxD,IAAI,WAAW;AACf,IAAI;AACF,QAAM,MAAM,KAAK,MAAM,aAAa,QAAQ,WAAW,iBAAiB,GAAG,OAAO,CAAC;AACnF,aAAW,IAAI;AACjB,QAAQ;AAAC;AAEF,IAAM,iBAAiB;AAEvB,SAAS,UAAkB;AAChC,SAAO;AACT;AAEO,SAAS,iBAAyB;AACvC,SAAO,GAAG,MAAM,QAAQ,MAAM,IAAI,cAAc,GAAG,CAAC,IAAI,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;AACnF;AAEO,SAAS,aAAmB;AACjC,UAAQ,IAAI,KAAK,MAAM,KAAK,OAAO,CAAC,IAAI,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC,EAAE;AACnE,UAAQ,IAAI;AACd;","names":[]}
@@ -0,0 +1,20 @@
1
+ // src/channels/index.ts
2
+ function defineChannel(config) {
3
+ if (!config.name || !config.handler) {
4
+ throw new Error("Channel must have name and handler");
5
+ }
6
+ return config;
7
+ }
8
+ function POST(handler) {
9
+ return handler;
10
+ }
11
+ function GET(handler) {
12
+ return handler;
13
+ }
14
+
15
+ export {
16
+ defineChannel,
17
+ POST,
18
+ GET
19
+ };
20
+ //# sourceMappingURL=chunk-ZJNHQXMO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/channels/index.ts"],"sourcesContent":["import type { ChannelConfig } from \"../types\";\n\nexport function defineChannel(config: ChannelConfig): ChannelConfig {\n if (!config.name || !config.handler) {\n throw new Error(\"Channel must have name and handler\");\n }\n return config;\n}\n\nexport function POST(handler: ChannelConfig[\"handler\"]): ChannelConfig[\"handler\"] {\n return handler;\n}\n\nexport function GET(handler: ChannelConfig[\"handler\"]): ChannelConfig[\"handler\"] {\n return handler;\n}\n"],"mappings":";AAEO,SAAS,cAAc,QAAsC;AAClE,MAAI,CAAC,OAAO,QAAQ,CAAC,OAAO,SAAS;AACnC,UAAM,IAAI,MAAM,oCAAoC;AAAA,EACtD;AACA,SAAO;AACT;AAEO,SAAS,KAAK,SAA6D;AAChF,SAAO;AACT;AAEO,SAAS,IAAI,SAA6D;AAC/E,SAAO;AACT;","names":[]}
@@ -1,3 +1,8 @@
1
1
  #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=index.d.ts.map
2
+ interface CliLogger {
3
+ error(message: string): void;
4
+ log(message: string): void;
5
+ }
6
+ declare function runCli(argv?: string[], logger?: CliLogger): Promise<void>;
7
+
8
+ export { runCli };
package/dist/cli/index.js CHANGED
@@ -1,43 +1,173 @@
1
1
  #!/usr/bin/env node
2
- import { Command } from "commander";
3
- import { initCommand } from "./init.js";
4
- import { devCommand } from "./dev.js";
5
- import { buildCommand } from "./build.js";
6
- import { showBanner } from "./banner.js";
7
- import { readFileSync } from "node:fs";
8
- import { resolve, dirname } from "node:path";
9
- import { fileURLToPath } from "node:url";
10
- const __dirname = dirname(fileURLToPath(import.meta.url));
11
- const pkgPath = resolve(__dirname, "../../package.json");
12
- let version = "0.1.0";
13
- try {
14
- const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
15
- version = pkg.version;
16
- }
17
- catch { }
18
- showBanner();
19
- const program = new Command();
20
- program
21
- .name("eline")
22
- .description("Eline the electronic line, build agents at the speed of light")
23
- .version(version);
24
- program
25
- .command("init")
26
- .description("Scaffold a new agent project")
27
- .argument("[name]", "Project directory name")
28
- .option("--template <name>", "Template to use (default, agent-only)", "default")
29
- .action(initCommand);
30
- program
31
- .command("dev")
32
- .description("Run the agent locally")
33
- .option("-p, --port <port>", "Port to listen on", "3000")
34
- .option("--agent-dir <path>", "Path to agent directory", "agent")
35
- .action(devCommand);
36
- program
37
- .command("build")
38
- .description("Compile the agent for production")
39
- .option("--agent-dir <path>", "Path to agent directory", "agent")
40
- .option("--out-dir <path>", "Output directory", ".eline")
41
- .action(buildCommand);
42
- program.parse(process.argv);
2
+ import {
3
+ createCliTheme,
4
+ renderCliTaggedLine
5
+ } from "../chunk-HVBDOHTL.js";
6
+ import {
7
+ arcieCliBanner,
8
+ version
9
+ } from "../chunk-XOFWQUOO.js";
10
+
11
+ // src/cli/index.ts
12
+ import { resolve as resolvePath } from "path";
13
+ import { Command, CommanderError, InvalidArgumentError } from "commander";
14
+ var DISPLAY_MODES = /* @__PURE__ */ new Set(["full", "collapsed", "auto-collapsed", "hidden"]);
15
+ var STATS_MODES = /* @__PURE__ */ new Set(["tokens", "tokensPerSecond"]);
16
+ var LOG_MODES = /* @__PURE__ */ new Set(["all", "stderr", "none"]);
17
+ function parsePortOption(value) {
18
+ if (!/^-?\d+$/.test(value)) {
19
+ throw new InvalidArgumentError(`Expected a numeric port, received "${value}".`);
20
+ }
21
+ const port = Number(value);
22
+ if (port < 0 || port > 65535) {
23
+ throw new InvalidArgumentError(`Expected a port between 0 and 65535, received "${value}".`);
24
+ }
25
+ return port;
26
+ }
27
+ function parseDisplayMode(value) {
28
+ if (!DISPLAY_MODES.has(value)) {
29
+ throw new InvalidArgumentError(
30
+ `Expected one of ${[...DISPLAY_MODES].join(", ")}, received "${value}".`
31
+ );
32
+ }
33
+ return value;
34
+ }
35
+ function parseStatsMode(value) {
36
+ if (!STATS_MODES.has(value)) {
37
+ throw new InvalidArgumentError(
38
+ `Expected one of ${[...STATS_MODES].join(", ")}, received "${value}".`
39
+ );
40
+ }
41
+ return value;
42
+ }
43
+ function parseLogsMode(value) {
44
+ if (!LOG_MODES.has(value)) {
45
+ throw new InvalidArgumentError(
46
+ `Expected one of ${[...LOG_MODES].join(", ")}, received "${value}".`
47
+ );
48
+ }
49
+ return value;
50
+ }
51
+ function parseContextSizeOption(value) {
52
+ const size = Number(value);
53
+ if (!Number.isFinite(size) || size <= 0) {
54
+ throw new InvalidArgumentError(`Expected a positive number, received "${value}".`);
55
+ }
56
+ return size;
57
+ }
58
+ function shouldPrintCliBootBanner(actionCommand) {
59
+ const name = actionCommand.name();
60
+ return name === "info" || name === "dev" || name === "init";
61
+ }
62
+ function createCliProgram(logger) {
63
+ const program = new Command();
64
+ const theme = createCliTheme();
65
+ program.name("arcie").description("arcie \u2014 the electronic line, build agents at the speed of light").version(version()).showHelpAfterError().exitOverride().hook("preAction", (_program, actionCommand) => {
66
+ if (shouldPrintCliBootBanner(actionCommand)) {
67
+ logger.log(arcieCliBanner());
68
+ }
69
+ }).configureOutput({
70
+ writeErr: (message) => logger.error(message.trimEnd()),
71
+ writeOut: (message) => logger.log(message.trimEnd())
72
+ });
73
+ const channels = program.command("channels").description("Manage channels for the current agent (web UI, HTTP, etc.).");
74
+ channels.command("add <kind>").description("Scaffold a channel (currently supports: web).").option("--agent-dir <path>", "Path to agent directory", ".").action(async (kind, options) => {
75
+ if (kind !== "web") {
76
+ logger.error(`unknown channel kind: ${kind}. supported: web`);
77
+ process.exit(1);
78
+ }
79
+ const agentDir = resolvePath(process.cwd(), options.agentDir);
80
+ const { scaffoldWebChat } = await import("../scaffold-web-chat-OQL5C2GK.js");
81
+ try {
82
+ const result = scaffoldWebChat(agentDir);
83
+ if (result.alreadyExisted) {
84
+ logger.error(`channels/web already exists at ${result.targetPath}`);
85
+ process.exit(1);
86
+ }
87
+ logger.log(
88
+ renderCliTaggedLine(theme, {
89
+ message: `scaffolded ${result.targetPath}`,
90
+ tag: "channels",
91
+ tone: "success"
92
+ })
93
+ );
94
+ logger.log(
95
+ renderCliTaggedLine(theme, {
96
+ message: "cd into it, then: npm install && cp .env.local.example .env.local && npm run dev",
97
+ tag: "next",
98
+ tone: "info"
99
+ })
100
+ );
101
+ } catch (err) {
102
+ logger.error(err instanceof Error ? err.message : String(err));
103
+ process.exit(1);
104
+ }
105
+ });
106
+ program.command("init [target]").description("Create a new arcie agent, or add one to an existing project directory.").option("--template <name>", "Template to use (default, agent-only)", "default").option("-y, --yes", "Accepted for compatibility; has no effect").action(async (target, options) => {
107
+ if (options.yes) logger.error("warning: --yes has no effect for arcie init.");
108
+ const { initCommand } = await import("../init-5F7CIVLN.js");
109
+ await initCommand(target, { template: options.template });
110
+ });
111
+ program.command("build").description("Compile the agent for production.").option("--agent-dir <path>", "Path to agent directory", "agent").option("--out-dir <path>", "Output directory", ".arcie").action(async (options) => {
112
+ const { buildCommand } = await import("../build-TWNCPXBU.js");
113
+ await buildCommand(options);
114
+ logger.log(
115
+ renderCliTaggedLine(theme, {
116
+ message: `output at ${options.outDir}`,
117
+ tag: "build",
118
+ tone: "success"
119
+ })
120
+ );
121
+ });
122
+ program.command("dev").description("Start the arcie development server or attach an interactive UI.").option("-p, --port <port>", "Port to listen on", parsePortOption, 3e3).option("--host <host>", "Host interface to bind").option("--agent-dir <path>", "Path to agent directory", "agent").option("--input <text>", "Pre-fill the prompt input, or start onboarding with /model").option("--no-ui", "Start the server without an interactive UI").option("--name <name>", "Title shown in the terminal UI (defaults to the app folder name)").option(
123
+ "--tools <mode>",
124
+ "How tool calls render: full | collapsed | auto-collapsed | hidden",
125
+ parseDisplayMode
126
+ ).option(
127
+ "--reasoning <mode>",
128
+ "How reasoning renders: full | collapsed | auto-collapsed | hidden",
129
+ parseDisplayMode
130
+ ).option(
131
+ "--subagents <mode>",
132
+ "How subagent sections render: full | collapsed | auto-collapsed | hidden",
133
+ parseDisplayMode
134
+ ).option(
135
+ "--assistant-response-stats <mode>",
136
+ "Assistant header statistic: tokens | tokensPerSecond",
137
+ parseStatsMode
138
+ ).option(
139
+ "--context-size <tokens>",
140
+ "Model context window size, shown as a usage percentage",
141
+ parseContextSizeOption
142
+ ).option("--logs <mode>", "Which logs to show: all | stderr | none", parseLogsMode).action(async (options) => {
143
+ const { devCommand } = await import("../dev-ZZDVOWUZ.js");
144
+ await devCommand({
145
+ port: String(options.port ?? 3e3),
146
+ agentDir: options.agentDir,
147
+ input: options.ui === false ? false : Boolean(options.input) || options.ui !== false
148
+ });
149
+ });
150
+ return program;
151
+ }
152
+ async function runCli(argv = process.argv.slice(2), logger = console) {
153
+ const program = createCliProgram(logger);
154
+ const input = argv.length === 0 ? ["dev"] : argv;
155
+ try {
156
+ await program.parseAsync(input, { from: "user" });
157
+ } catch (error) {
158
+ if (error instanceof CommanderError) {
159
+ if (error.exitCode === 0) return;
160
+ throw new Error(error.message);
161
+ }
162
+ throw error;
163
+ }
164
+ }
165
+ runCli().catch((error) => {
166
+ const message = error instanceof Error ? error.message : String(error);
167
+ console.error(message);
168
+ process.exit(1);
169
+ });
170
+ export {
171
+ runCli
172
+ };
43
173
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;AACzD,IAAI,OAAO,GAAG,OAAO,CAAC;AACtB,IAAI,CAAC;IACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACvD,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;AACxB,CAAC;AAAC,MAAM,CAAC,CAAA,CAAC;AAEV,UAAU,EAAE,CAAC;AAEb,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,iEAAiE,CAAC;KAC9E,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,8BAA8B,CAAC;KAC3C,QAAQ,CAAC,QAAQ,EAAE,wBAAwB,CAAC;KAC5C,MAAM,CAAC,mBAAmB,EAAE,uCAAuC,EAAE,SAAS,CAAC;KAC/E,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,uBAAuB,CAAC;KACpC,MAAM,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,CAAC;KACxD,MAAM,CAAC,oBAAoB,EAAE,yBAAyB,EAAE,OAAO,CAAC;KAChE,MAAM,CAAC,UAAU,CAAC,CAAC;AAEtB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,oBAAoB,EAAE,yBAAyB,EAAE,OAAO,CAAC;KAChE,MAAM,CAAC,kBAAkB,EAAE,kBAAkB,EAAE,QAAQ,CAAC;KACxD,MAAM,CAAC,YAAY,CAAC,CAAC;AAExB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"sources":["../../src/cli/index.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { resolve as resolvePath } from \"node:path\";\nimport { Command, CommanderError, InvalidArgumentError } from \"commander\";\nimport { arcieCliBanner, version } from \"./banner\";\nimport { createCliTheme, renderCliTaggedLine } from \"./ui/output\";\n\ninterface CliLogger {\n error(message: string): void;\n log(message: string): void;\n}\n\nconst DISPLAY_MODES = new Set([\"full\", \"collapsed\", \"auto-collapsed\", \"hidden\"]);\nconst STATS_MODES = new Set([\"tokens\", \"tokensPerSecond\"]);\nconst LOG_MODES = new Set([\"all\", \"stderr\", \"none\"]);\n\ntype TerminalPartDisplayMode = \"full\" | \"collapsed\" | \"auto-collapsed\" | \"hidden\";\ntype AssistantResponseStatsMode = \"tokens\" | \"tokensPerSecond\";\ntype LogDisplayMode = \"all\" | \"stderr\" | \"none\";\n\nfunction parsePortOption(value: string): number {\n if (!/^-?\\d+$/.test(value)) {\n throw new InvalidArgumentError(`Expected a numeric port, received \"${value}\".`);\n }\n const port = Number(value);\n if (port < 0 || port > 65_535) {\n throw new InvalidArgumentError(`Expected a port between 0 and 65535, received \"${value}\".`);\n }\n return port;\n}\n\nfunction parseDisplayMode(value: string): TerminalPartDisplayMode {\n if (!DISPLAY_MODES.has(value)) {\n throw new InvalidArgumentError(\n `Expected one of ${[...DISPLAY_MODES].join(\", \")}, received \"${value}\".`,\n );\n }\n return value as TerminalPartDisplayMode;\n}\n\nfunction parseStatsMode(value: string): AssistantResponseStatsMode {\n if (!STATS_MODES.has(value)) {\n throw new InvalidArgumentError(\n `Expected one of ${[...STATS_MODES].join(\", \")}, received \"${value}\".`,\n );\n }\n return value as AssistantResponseStatsMode;\n}\n\nfunction parseLogsMode(value: string): LogDisplayMode {\n if (!LOG_MODES.has(value)) {\n throw new InvalidArgumentError(\n `Expected one of ${[...LOG_MODES].join(\", \")}, received \"${value}\".`,\n );\n }\n return value as LogDisplayMode;\n}\n\nfunction parseContextSizeOption(value: string): number {\n const size = Number(value);\n if (!Number.isFinite(size) || size <= 0) {\n throw new InvalidArgumentError(`Expected a positive number, received \"${value}\".`);\n }\n return size;\n}\n\nfunction shouldPrintCliBootBanner(actionCommand: Command): boolean {\n const name = actionCommand.name();\n return name === \"info\" || name === \"dev\" || name === \"init\";\n}\n\nfunction createCliProgram(logger: CliLogger): Command {\n const program = new Command();\n const theme = createCliTheme();\n\n program\n .name(\"arcie\")\n .description(\"arcie — the electronic line, build agents at the speed of light\")\n .version(version())\n .showHelpAfterError()\n .exitOverride()\n .hook(\"preAction\", (_program, actionCommand) => {\n if (shouldPrintCliBootBanner(actionCommand)) {\n logger.log(arcieCliBanner());\n }\n })\n .configureOutput({\n writeErr: (message) => logger.error(message.trimEnd()),\n writeOut: (message) => logger.log(message.trimEnd()),\n });\n\n const channels = program\n .command(\"channels\")\n .description(\"Manage channels for the current agent (web UI, HTTP, etc.).\");\n\n channels\n .command(\"add <kind>\")\n .description(\"Scaffold a channel (currently supports: web).\")\n .option(\"--agent-dir <path>\", \"Path to agent directory\", \".\")\n .action(async (kind: string, options: { agentDir: string }) => {\n if (kind !== \"web\") {\n logger.error(`unknown channel kind: ${kind}. supported: web`);\n process.exit(1);\n }\n const agentDir = resolvePath(process.cwd(), options.agentDir);\n const { scaffoldWebChat } = await import(\"./scaffold-web-chat\");\n try {\n const result = scaffoldWebChat(agentDir);\n if (result.alreadyExisted) {\n logger.error(`channels/web already exists at ${result.targetPath}`);\n process.exit(1);\n }\n logger.log(\n renderCliTaggedLine(theme, {\n message: `scaffolded ${result.targetPath}`,\n tag: \"channels\",\n tone: \"success\",\n }),\n );\n logger.log(\n renderCliTaggedLine(theme, {\n message: \"cd into it, then: npm install && cp .env.local.example .env.local && npm run dev\",\n tag: \"next\",\n tone: \"info\",\n }),\n );\n } catch (err) {\n logger.error(err instanceof Error ? err.message : String(err));\n process.exit(1);\n }\n });\n\n program\n .command(\"init [target]\")\n .description(\"Create a new arcie agent, or add one to an existing project directory.\")\n .option(\"--template <name>\", \"Template to use (default, agent-only)\", \"default\")\n .option(\"-y, --yes\", \"Accepted for compatibility; has no effect\")\n .action(async (target: string | undefined, options: { template: string; yes?: boolean }) => {\n if (options.yes) logger.error(\"warning: --yes has no effect for arcie init.\");\n const { initCommand } = await import(\"./init\");\n await initCommand(target, { template: options.template });\n });\n\n program\n .command(\"build\")\n .description(\"Compile the agent for production.\")\n .option(\"--agent-dir <path>\", \"Path to agent directory\", \"agent\")\n .option(\"--out-dir <path>\", \"Output directory\", \".arcie\")\n .action(async (options: { agentDir: string; outDir: string }) => {\n const { buildCommand } = await import(\"./build\");\n await buildCommand(options);\n logger.log(\n renderCliTaggedLine(theme, {\n message: `output at ${options.outDir}`,\n tag: \"build\",\n tone: \"success\",\n }),\n );\n });\n\n program\n .command(\"dev\")\n .description(\"Start the arcie development server or attach an interactive UI.\")\n .option(\"-p, --port <port>\", \"Port to listen on\", parsePortOption, 3000)\n .option(\"--host <host>\", \"Host interface to bind\")\n .option(\"--agent-dir <path>\", \"Path to agent directory\", \"agent\")\n .option(\"--input <text>\", \"Pre-fill the prompt input, or start onboarding with /model\")\n .option(\"--no-ui\", \"Start the server without an interactive UI\")\n .option(\"--name <name>\", \"Title shown in the terminal UI (defaults to the app folder name)\")\n .option(\n \"--tools <mode>\",\n \"How tool calls render: full | collapsed | auto-collapsed | hidden\",\n parseDisplayMode,\n )\n .option(\n \"--reasoning <mode>\",\n \"How reasoning renders: full | collapsed | auto-collapsed | hidden\",\n parseDisplayMode,\n )\n .option(\n \"--subagents <mode>\",\n \"How subagent sections render: full | collapsed | auto-collapsed | hidden\",\n parseDisplayMode,\n )\n .option(\n \"--assistant-response-stats <mode>\",\n \"Assistant header statistic: tokens | tokensPerSecond\",\n parseStatsMode,\n )\n .option(\n \"--context-size <tokens>\",\n \"Model context window size, shown as a usage percentage\",\n parseContextSizeOption,\n )\n .option(\"--logs <mode>\", \"Which logs to show: all | stderr | none\", parseLogsMode)\n .action(async (options) => {\n const { devCommand } = await import(\"./dev\");\n await devCommand({\n port: String(options.port ?? 3000),\n agentDir: options.agentDir,\n input: options.ui === false ? false : Boolean(options.input) || options.ui !== false,\n });\n });\n\n return program;\n}\n\nexport async function runCli(\n argv: string[] = process.argv.slice(2),\n logger: CliLogger = console,\n): Promise<void> {\n const program = createCliProgram(logger);\n const input = argv.length === 0 ? [\"dev\"] : argv;\n\n try {\n await program.parseAsync(input, { from: \"user\" });\n } catch (error) {\n if (error instanceof CommanderError) {\n if (error.exitCode === 0) return;\n throw new Error(error.message);\n }\n throw error;\n }\n}\n\nrunCli().catch((error) => {\n const message = error instanceof Error ? error.message : String(error);\n console.error(message);\n process.exit(1);\n});\n"],"mappings":";;;;;;;;;;;AACA,SAAS,WAAW,mBAAmB;AACvC,SAAS,SAAS,gBAAgB,4BAA4B;AAS9D,IAAM,gBAAgB,oBAAI,IAAI,CAAC,QAAQ,aAAa,kBAAkB,QAAQ,CAAC;AAC/E,IAAM,cAAc,oBAAI,IAAI,CAAC,UAAU,iBAAiB,CAAC;AACzD,IAAM,YAAY,oBAAI,IAAI,CAAC,OAAO,UAAU,MAAM,CAAC;AAMnD,SAAS,gBAAgB,OAAuB;AAC9C,MAAI,CAAC,UAAU,KAAK,KAAK,GAAG;AAC1B,UAAM,IAAI,qBAAqB,sCAAsC,KAAK,IAAI;AAAA,EAChF;AACA,QAAM,OAAO,OAAO,KAAK;AACzB,MAAI,OAAO,KAAK,OAAO,OAAQ;AAC7B,UAAM,IAAI,qBAAqB,kDAAkD,KAAK,IAAI;AAAA,EAC5F;AACA,SAAO;AACT;AAEA,SAAS,iBAAiB,OAAwC;AAChE,MAAI,CAAC,cAAc,IAAI,KAAK,GAAG;AAC7B,UAAM,IAAI;AAAA,MACR,mBAAmB,CAAC,GAAG,aAAa,EAAE,KAAK,IAAI,CAAC,eAAe,KAAK;AAAA,IACtE;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,eAAe,OAA2C;AACjE,MAAI,CAAC,YAAY,IAAI,KAAK,GAAG;AAC3B,UAAM,IAAI;AAAA,MACR,mBAAmB,CAAC,GAAG,WAAW,EAAE,KAAK,IAAI,CAAC,eAAe,KAAK;AAAA,IACpE;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,cAAc,OAA+B;AACpD,MAAI,CAAC,UAAU,IAAI,KAAK,GAAG;AACzB,UAAM,IAAI;AAAA,MACR,mBAAmB,CAAC,GAAG,SAAS,EAAE,KAAK,IAAI,CAAC,eAAe,KAAK;AAAA,IAClE;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,uBAAuB,OAAuB;AACrD,QAAM,OAAO,OAAO,KAAK;AACzB,MAAI,CAAC,OAAO,SAAS,IAAI,KAAK,QAAQ,GAAG;AACvC,UAAM,IAAI,qBAAqB,yCAAyC,KAAK,IAAI;AAAA,EACnF;AACA,SAAO;AACT;AAEA,SAAS,yBAAyB,eAAiC;AACjE,QAAM,OAAO,cAAc,KAAK;AAChC,SAAO,SAAS,UAAU,SAAS,SAAS,SAAS;AACvD;AAEA,SAAS,iBAAiB,QAA4B;AACpD,QAAM,UAAU,IAAI,QAAQ;AAC5B,QAAM,QAAQ,eAAe;AAE7B,UACG,KAAK,OAAO,EACZ,YAAY,sEAAiE,EAC7E,QAAQ,QAAQ,CAAC,EACjB,mBAAmB,EACnB,aAAa,EACb,KAAK,aAAa,CAAC,UAAU,kBAAkB;AAC9C,QAAI,yBAAyB,aAAa,GAAG;AAC3C,aAAO,IAAI,eAAe,CAAC;AAAA,IAC7B;AAAA,EACF,CAAC,EACA,gBAAgB;AAAA,IACf,UAAU,CAAC,YAAY,OAAO,MAAM,QAAQ,QAAQ,CAAC;AAAA,IACrD,UAAU,CAAC,YAAY,OAAO,IAAI,QAAQ,QAAQ,CAAC;AAAA,EACrD,CAAC;AAEH,QAAM,WAAW,QACd,QAAQ,UAAU,EAClB,YAAY,6DAA6D;AAE5E,WACG,QAAQ,YAAY,EACpB,YAAY,+CAA+C,EAC3D,OAAO,sBAAsB,2BAA2B,GAAG,EAC3D,OAAO,OAAO,MAAc,YAAkC;AAC7D,QAAI,SAAS,OAAO;AAClB,aAAO,MAAM,yBAAyB,IAAI,kBAAkB;AAC5D,cAAQ,KAAK,CAAC;AAAA,IAChB;AACA,UAAM,WAAW,YAAY,QAAQ,IAAI,GAAG,QAAQ,QAAQ;AAC5D,UAAM,EAAE,gBAAgB,IAAI,MAAM,OAAO,kCAAqB;AAC9D,QAAI;AACF,YAAM,SAAS,gBAAgB,QAAQ;AACvC,UAAI,OAAO,gBAAgB;AACzB,eAAO,MAAM,kCAAkC,OAAO,UAAU,EAAE;AAClE,gBAAQ,KAAK,CAAC;AAAA,MAChB;AACA,aAAO;AAAA,QACL,oBAAoB,OAAO;AAAA,UACzB,SAAS,cAAc,OAAO,UAAU;AAAA,UACxC,KAAK;AAAA,UACL,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AACA,aAAO;AAAA,QACL,oBAAoB,OAAO;AAAA,UACzB,SAAS;AAAA,UACT,KAAK;AAAA,UACL,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF,SAAS,KAAK;AACZ,aAAO,MAAM,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AAC7D,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF,CAAC;AAEH,UACG,QAAQ,eAAe,EACvB,YAAY,wEAAwE,EACpF,OAAO,qBAAqB,yCAAyC,SAAS,EAC9E,OAAO,aAAa,2CAA2C,EAC/D,OAAO,OAAO,QAA4B,YAAiD;AAC1F,QAAI,QAAQ,IAAK,QAAO,MAAM,8CAA8C;AAC5E,UAAM,EAAE,YAAY,IAAI,MAAM,OAAO,qBAAQ;AAC7C,UAAM,YAAY,QAAQ,EAAE,UAAU,QAAQ,SAAS,CAAC;AAAA,EAC1D,CAAC;AAEH,UACG,QAAQ,OAAO,EACf,YAAY,mCAAmC,EAC/C,OAAO,sBAAsB,2BAA2B,OAAO,EAC/D,OAAO,oBAAoB,oBAAoB,QAAQ,EACvD,OAAO,OAAO,YAAkD;AAC/D,UAAM,EAAE,aAAa,IAAI,MAAM,OAAO,sBAAS;AAC/C,UAAM,aAAa,OAAO;AAC1B,WAAO;AAAA,MACL,oBAAoB,OAAO;AAAA,QACzB,SAAS,aAAa,QAAQ,MAAM;AAAA,QACpC,KAAK;AAAA,QACL,MAAM;AAAA,MACR,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAEH,UACG,QAAQ,KAAK,EACb,YAAY,iEAAiE,EAC7E,OAAO,qBAAqB,qBAAqB,iBAAiB,GAAI,EACtE,OAAO,iBAAiB,wBAAwB,EAChD,OAAO,sBAAsB,2BAA2B,OAAO,EAC/D,OAAO,kBAAkB,4DAA4D,EACrF,OAAO,WAAW,4CAA4C,EAC9D,OAAO,iBAAiB,kEAAkE,EAC1F;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACF,EACC,OAAO,iBAAiB,2CAA2C,aAAa,EAChF,OAAO,OAAO,YAAY;AACzB,UAAM,EAAE,WAAW,IAAI,MAAM,OAAO,oBAAO;AAC3C,UAAM,WAAW;AAAA,MACf,MAAM,OAAO,QAAQ,QAAQ,GAAI;AAAA,MACjC,UAAU,QAAQ;AAAA,MAClB,OAAO,QAAQ,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,KAAK,KAAK,QAAQ,OAAO;AAAA,IACjF,CAAC;AAAA,EACH,CAAC;AAEH,SAAO;AACT;AAEA,eAAsB,OACpB,OAAiB,QAAQ,KAAK,MAAM,CAAC,GACrC,SAAoB,SACL;AACf,QAAM,UAAU,iBAAiB,MAAM;AACvC,QAAM,QAAQ,KAAK,WAAW,IAAI,CAAC,KAAK,IAAI;AAE5C,MAAI;AACF,UAAM,QAAQ,WAAW,OAAO,EAAE,MAAM,OAAO,CAAC;AAAA,EAClD,SAAS,OAAO;AACd,QAAI,iBAAiB,gBAAgB;AACnC,UAAI,MAAM,aAAa,EAAG;AAC1B,YAAM,IAAI,MAAM,MAAM,OAAO;AAAA,IAC/B;AACA,UAAM;AAAA,EACR;AACF;AAEA,OAAO,EAAE,MAAM,CAAC,UAAU;AACxB,QAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACrE,UAAQ,MAAM,OAAO;AACrB,UAAQ,KAAK,CAAC;AAChB,CAAC;","names":[]}
@@ -1,11 +1,14 @@
1
- import type { Session, TurnContext } from "../types.js";
2
- export declare function getSession(): Session | null;
3
- export declare function getTurn(): TurnContext | null;
4
- export declare function setSession(session: Session): void;
5
- export declare function setTurn(turn: TurnContext): void;
6
- export declare function getContext<T = unknown>(key: string): T | undefined;
7
- export declare function requireContext<T = unknown>(key: string): T;
8
- export declare function hasContext(key: string): boolean;
9
- export declare function setContext(key: string, value: unknown): void;
10
- export declare function ensureContext<T>(key: string, factory: () => T): T;
11
- //# sourceMappingURL=index.d.ts.map
1
+ import { j as Session, n as TurnContext } from '../types-DwxwdSa2.js';
2
+ import 'zod';
3
+
4
+ declare function getSession(): Session | null;
5
+ declare function getTurn(): TurnContext | null;
6
+ declare function setSession(session: Session): void;
7
+ declare function setTurn(turn: TurnContext): void;
8
+ declare function getContext<T = unknown>(key: string): T | undefined;
9
+ declare function requireContext<T = unknown>(key: string): T;
10
+ declare function hasContext(key: string): boolean;
11
+ declare function setContext(key: string, value: unknown): void;
12
+ declare function ensureContext<T>(key: string, factory: () => T): T;
13
+
14
+ export { ensureContext, getContext, getSession, getTurn, hasContext, requireContext, setContext, setSession, setTurn };
@@ -1,38 +1,23 @@
1
- let currentSession = null;
2
- let currentTurn = null;
3
- const sharedContext = new Map();
4
- export function getSession() {
5
- return currentSession;
6
- }
7
- export function getTurn() {
8
- return currentTurn;
9
- }
10
- export function setSession(session) {
11
- currentSession = session;
12
- }
13
- export function setTurn(turn) {
14
- currentTurn = turn;
15
- }
16
- export function getContext(key) {
17
- return sharedContext.get(key);
18
- }
19
- export function requireContext(key) {
20
- const value = sharedContext.get(key);
21
- if (value === undefined) {
22
- throw new Error(`Required context key not found: ${key}`);
23
- }
24
- return value;
25
- }
26
- export function hasContext(key) {
27
- return sharedContext.has(key);
28
- }
29
- export function setContext(key, value) {
30
- sharedContext.set(key, value);
31
- }
32
- export function ensureContext(key, factory) {
33
- if (!sharedContext.has(key)) {
34
- sharedContext.set(key, factory());
35
- }
36
- return sharedContext.get(key);
37
- }
1
+ import {
2
+ ensureContext,
3
+ getContext,
4
+ getSession,
5
+ getTurn,
6
+ hasContext,
7
+ requireContext,
8
+ setContext,
9
+ setSession,
10
+ setTurn
11
+ } from "../chunk-WAD7VLNI.js";
12
+ export {
13
+ ensureContext,
14
+ getContext,
15
+ getSession,
16
+ getTurn,
17
+ hasContext,
18
+ requireContext,
19
+ setContext,
20
+ setSession,
21
+ setTurn
22
+ };
38
23
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"AAEA,IAAI,cAAc,GAAmB,IAAI,CAAC;AAC1C,IAAI,WAAW,GAAuB,IAAI,CAAC;AAC3C,MAAM,aAAa,GAAG,IAAI,GAAG,EAAmB,CAAC;AAEjD,MAAM,UAAU,UAAU;IACxB,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,OAAO;IACrB,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAgB;IACzC,cAAc,GAAG,OAAO,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAiB;IACvC,WAAW,GAAG,IAAI,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,UAAU,CAAc,GAAW;IACjD,OAAO,aAAa,CAAC,GAAG,CAAC,GAAG,CAAkB,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,cAAc,CAAc,GAAW;IACrD,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,mCAAmC,GAAG,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,KAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,OAAO,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAW,EAAE,KAAc;IACpD,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,GAAW,EACX,OAAgB;IAEhB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,aAAa,CAAC,GAAG,CAAC,GAAG,CAAM,CAAC;AACrC,CAAC"}
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}