arcie 0.1.2

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 (98) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +66 -0
  3. package/dist/agent/index.d.ts +3 -0
  4. package/dist/agent/index.d.ts.map +1 -0
  5. package/dist/agent/index.js +7 -0
  6. package/dist/agent/index.js.map +1 -0
  7. package/dist/auth/index.d.ts +10 -0
  8. package/dist/auth/index.d.ts.map +1 -0
  9. package/dist/auth/index.js +18 -0
  10. package/dist/auth/index.js.map +1 -0
  11. package/dist/channels/index.d.ts +5 -0
  12. package/dist/channels/index.d.ts.map +1 -0
  13. package/dist/channels/index.js +13 -0
  14. package/dist/channels/index.js.map +1 -0
  15. package/dist/cli/banner.d.ts +2 -0
  16. package/dist/cli/banner.d.ts.map +1 -0
  17. package/dist/cli/banner.js +10 -0
  18. package/dist/cli/banner.js.map +1 -0
  19. package/dist/cli/build.d.ts +5 -0
  20. package/dist/cli/build.d.ts.map +1 -0
  21. package/dist/cli/build.js +54 -0
  22. package/dist/cli/build.js.map +1 -0
  23. package/dist/cli/dev.d.ts +5 -0
  24. package/dist/cli/dev.d.ts.map +1 -0
  25. package/dist/cli/dev.js +74 -0
  26. package/dist/cli/dev.js.map +1 -0
  27. package/dist/cli/index.d.ts +3 -0
  28. package/dist/cli/index.d.ts.map +1 -0
  29. package/dist/cli/index.js +43 -0
  30. package/dist/cli/index.js.map +1 -0
  31. package/dist/cli/init.d.ts +4 -0
  32. package/dist/cli/init.d.ts.map +1 -0
  33. package/dist/cli/init.js +75 -0
  34. package/dist/cli/init.js.map +1 -0
  35. package/dist/context/index.d.ts +11 -0
  36. package/dist/context/index.d.ts.map +1 -0
  37. package/dist/context/index.js +38 -0
  38. package/dist/context/index.js.map +1 -0
  39. package/dist/discover/index.d.ts +31 -0
  40. package/dist/discover/index.d.ts.map +1 -0
  41. package/dist/discover/index.js +133 -0
  42. package/dist/discover/index.js.map +1 -0
  43. package/dist/hooks/index.d.ts +3 -0
  44. package/dist/hooks/index.d.ts.map +1 -0
  45. package/dist/hooks/index.js +7 -0
  46. package/dist/hooks/index.js.map +1 -0
  47. package/dist/index.d.ts +18 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +14 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/instructions/index.d.ts +4 -0
  52. package/dist/instructions/index.d.ts.map +1 -0
  53. package/dist/instructions/index.js +33 -0
  54. package/dist/instructions/index.js.map +1 -0
  55. package/dist/loader.d.ts +7 -0
  56. package/dist/loader.d.ts.map +1 -0
  57. package/dist/loader.js +102 -0
  58. package/dist/loader.js.map +1 -0
  59. package/dist/protocol/events.d.ts +192 -0
  60. package/dist/protocol/events.d.ts.map +1 -0
  61. package/dist/protocol/events.js +46 -0
  62. package/dist/protocol/events.js.map +1 -0
  63. package/dist/runner/index.d.ts +18 -0
  64. package/dist/runner/index.d.ts.map +1 -0
  65. package/dist/runner/index.js +278 -0
  66. package/dist/runner/index.js.map +1 -0
  67. package/dist/schedules/index.d.ts +3 -0
  68. package/dist/schedules/index.d.ts.map +1 -0
  69. package/dist/schedules/index.js +7 -0
  70. package/dist/schedules/index.js.map +1 -0
  71. package/dist/skills/index.d.ts +4 -0
  72. package/dist/skills/index.d.ts.map +1 -0
  73. package/dist/skills/index.js +28 -0
  74. package/dist/skills/index.js.map +1 -0
  75. package/dist/tools/index.d.ts +3 -0
  76. package/dist/tools/index.d.ts.map +1 -0
  77. package/dist/tools/index.js +10 -0
  78. package/dist/tools/index.js.map +1 -0
  79. package/dist/types.d.ts +118 -0
  80. package/dist/types.d.ts.map +1 -0
  81. package/dist/types.js +2 -0
  82. package/dist/types.js.map +1 -0
  83. package/docs/getting-started.md +51 -0
  84. package/docs/index.md +31 -0
  85. package/docs/project-layout.md +88 -0
  86. package/package.json +73 -0
  87. package/templates/default/agent/agent.ts +13 -0
  88. package/templates/default/agent/channels/.gitkeep +0 -0
  89. package/templates/default/agent/connections/.gitkeep +0 -0
  90. package/templates/default/agent/instructions.md +3 -0
  91. package/templates/default/agent/knowledge/.gitkeep +0 -0
  92. package/templates/default/agent/policies/.gitkeep +0 -0
  93. package/templates/default/agent/schedules/.gitkeep +0 -0
  94. package/templates/default/agent/sessions/.gitkeep +0 -0
  95. package/templates/default/agent/subagents/.gitkeep +0 -0
  96. package/templates/default/agent/tools/.gitkeep +0 -0
  97. package/templates/default/package.json +17 -0
  98. package/templates/default/tsconfig.json +11 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Cencori
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,66 @@
1
+ # Eline
2
+
3
+ The electronic line — build agents at the speed of light.
4
+
5
+ > Site: [cencori.com/eline](https://cencori.com/eline) · Docs: [cencori.com/eline/docs](https://cencori.com/eline/docs)
6
+
7
+ ```
8
+ npx eline@latest init my-agent
9
+ ```
10
+
11
+ ```
12
+ my-agent/
13
+ ├── agent/
14
+ │ ├── agent.ts # model + Cencori config
15
+ │ ├── instructions.md # system prompt
16
+ │ ├── tools/ # what it can do
17
+ │ ├── knowledge/ # what it knows
18
+ │ ├── subagents/ # who it delegates to
19
+ │ ├── channels/ # where it lives (HTTP, Slack, etc.)
20
+ │ ├── schedules/ # when it acts on its own
21
+ │ ├── sessions/ # durable execution policies
22
+ │ └── policies/ # security, budgets, guardrails
23
+ ├── package.json
24
+ └── tsconfig.json
25
+ ```
26
+
27
+ ## Quick Start
28
+
29
+ ```bash
30
+ npx eline@latest init my-agent
31
+ cd my-agent
32
+ npm run dev
33
+ ```
34
+
35
+ ## Authoring
36
+
37
+ ```ts
38
+ // agent/agent.ts
39
+ import { defineAgent } from "eline";
40
+
41
+ export default defineAgent({
42
+ model: "claude-sonnet-4-5",
43
+ cencori: {
44
+ project: "proj_abc",
45
+ billing: { budget: "50.00/month" },
46
+ },
47
+ });
48
+ ```
49
+
50
+ ```ts
51
+ // agent/tools/get_weather.ts
52
+ import { defineTool } from "eline/tools";
53
+ import { z } from "zod";
54
+
55
+ export default defineTool({
56
+ description: "Get the current weather for a city.",
57
+ inputSchema: z.object({ city: z.string() }),
58
+ async execute({ city }) {
59
+ return { city, condition: "Sunny", temperatureF: 72 };
60
+ },
61
+ });
62
+ ```
63
+
64
+ ## License
65
+
66
+ MIT
@@ -0,0 +1,3 @@
1
+ import type { AgentConfig } from "../types.js";
2
+ export declare function defineAgent(config: AgentConfig): AgentConfig;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAK5D"}
@@ -0,0 +1,7 @@
1
+ export function defineAgent(config) {
2
+ if (!config.model) {
3
+ throw new Error("Agent must specify a model");
4
+ }
5
+ return config;
6
+ }
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,WAAW,CAAC,MAAmB;IAC7C,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,10 @@
1
+ export type TokenValue = string | (() => string | Promise<string>);
2
+ export type OutboundAuthFn = () => Promise<{
3
+ readonly headers: Readonly<Record<string, string>>;
4
+ }>;
5
+ export declare function bearer(token: TokenValue): OutboundAuthFn;
6
+ export declare function basic(input: {
7
+ username: string;
8
+ password: TokenValue;
9
+ }): OutboundAuthFn;
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAEnE,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACpD,CAAC,CAAC;AAEH,wBAAgB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,cAAc,CAMxD;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,UAAU,CAAC;CACtB,GAAG,cAAc,CAMjB"}
@@ -0,0 +1,18 @@
1
+ export function bearer(token) {
2
+ return async () => ({
3
+ headers: {
4
+ authorization: `Bearer ${await resolveToken(token)}`,
5
+ },
6
+ });
7
+ }
8
+ export function basic(input) {
9
+ return async () => ({
10
+ headers: {
11
+ authorization: `Basic ${btoa(`${input.username}:${await resolveToken(input.password)}`)}`,
12
+ },
13
+ });
14
+ }
15
+ async function resolveToken(value) {
16
+ return typeof value === "function" ? await value() : value;
17
+ }
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,MAAM,CAAC,KAAiB;IACtC,OAAO,KAAK,IAAI,EAAE,CAAC,CAAC;QAClB,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,MAAM,YAAY,CAAC,KAAK,CAAC,EAAE;SACrD;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,KAGrB;IACC,OAAO,KAAK,IAAI,EAAE,CAAC,CAAC;QAClB,OAAO,EAAE;YACP,aAAa,EAAE,SAAS,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,IAAI,MAAM,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;SAC1F;KACF,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,KAAiB;IAC3C,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7D,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { ChannelConfig } from "../types.js";
2
+ export declare function defineChannel(config: ChannelConfig): ChannelConfig;
3
+ export declare function POST(handler: ChannelConfig["handler"]): ChannelConfig["handler"];
4
+ export declare function GET(handler: ChannelConfig["handler"]): ChannelConfig["handler"];
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/channels/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,CAKlE;AAED,wBAAgB,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC,SAAS,CAAC,CAEhF;AAED,wBAAgB,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC,SAAS,CAAC,CAE/E"}
@@ -0,0 +1,13 @@
1
+ export function defineChannel(config) {
2
+ if (!config.name || !config.handler) {
3
+ throw new Error("Channel must have name and handler");
4
+ }
5
+ return config;
6
+ }
7
+ export function POST(handler) {
8
+ return handler;
9
+ }
10
+ export function GET(handler) {
11
+ return handler;
12
+ }
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/channels/index.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,aAAa,CAAC,MAAqB;IACjD,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,OAAiC;IACpD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,OAAiC;IACnD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function showBanner(): void;
2
+ //# sourceMappingURL=banner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../src/cli/banner.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,IAAI,IAAI,CAQjC"}
@@ -0,0 +1,10 @@
1
+ export function showBanner() {
2
+ console.log();
3
+ console.log(" ╔══════════════════════════════════╗");
4
+ console.log(" ║ Eline ║");
5
+ console.log(" ║ The electronic line — build ║");
6
+ console.log(" ║ agents at the speed of light. ║");
7
+ console.log(" ╚══════════════════════════════════╝");
8
+ console.log();
9
+ }
10
+ //# sourceMappingURL=banner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/cli/banner.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,UAAU;IACxB,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function buildCommand(options: {
2
+ agentDir: string;
3
+ outDir: string;
4
+ }): Promise<void>;
5
+ //# sourceMappingURL=build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/cli/build.ts"],"names":[],"mappings":"AAKA,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2DhB"}
@@ -0,0 +1,54 @@
1
+ import { mkdirSync, writeFileSync, existsSync } from "node:fs";
2
+ import { resolve, join } from "node:path";
3
+ import { loadAgent } from "../loader.js";
4
+ import { discoverAgent } from "../discover/index.js";
5
+ export async function buildCommand(options) {
6
+ const agentDirPath = resolve(process.cwd(), options.agentDir);
7
+ const outDir = resolve(process.cwd(), options.outDir);
8
+ console.log(`\n Building agent...\n`);
9
+ if (!existsSync(agentDirPath)) {
10
+ console.error(` Agent directory not found: ${agentDirPath}`);
11
+ process.exit(1);
12
+ }
13
+ const { agent: discovered, diagnostics } = discoverAgent(agentDirPath);
14
+ if (diagnostics.some((d) => d.severity === "error")) {
15
+ for (const d of diagnostics) {
16
+ console.error(` ✖ ${d.code}: ${d.message}`);
17
+ }
18
+ process.exit(1);
19
+ }
20
+ try {
21
+ const agent = await loadAgent(agentDirPath);
22
+ mkdirSync(outDir, { recursive: true });
23
+ const manifest = {
24
+ config: agent.manifest.config,
25
+ instructions: agent.manifest.instructions,
26
+ tools: Object.keys(agent.manifest.tools),
27
+ skills: Object.keys(agent.manifest.skills),
28
+ hooks: Object.keys(agent.manifest.hooks),
29
+ channels: Object.keys(agent.manifest.channels),
30
+ schedules: Object.keys(agent.manifest.schedules),
31
+ discovered: {
32
+ tools: discovered.tools.map((t) => t.name),
33
+ skills: discovered.skills.map((s) => s.name),
34
+ hooks: discovered.hooks.map((h) => h.name),
35
+ channels: discovered.channels.map((c) => c.name),
36
+ schedules: discovered.schedules.map((s) => s.name),
37
+ },
38
+ session: agent.manifest.session,
39
+ policy: agent.manifest.policy,
40
+ };
41
+ writeFileSync(join(outDir, "manifest.json"), JSON.stringify(manifest, null, 2));
42
+ console.log(` Written to ${outDir}/manifest.json`);
43
+ console.log(` Tools: ${manifest.tools.length}`);
44
+ console.log(` Skills: ${manifest.skills.length}`);
45
+ console.log(` Channels: ${manifest.channels.length}`);
46
+ console.log(` Schedules: ${manifest.schedules.length}`);
47
+ console.log(`\n Done.\n`);
48
+ }
49
+ catch (err) {
50
+ console.error(` Build failed:`, err);
51
+ process.exit(1);
52
+ }
53
+ }
54
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/cli/build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare function devCommand(options: {
2
+ port: string;
3
+ agentDir: string;
4
+ }): Promise<void>;
5
+ //# sourceMappingURL=dev.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/cli/dev.ts"],"names":[],"mappings":"AAQA,wBAAsB,UAAU,CAAC,OAAO,EAAE;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0EhB"}
@@ -0,0 +1,74 @@
1
+ import { createServer } from "node:http";
2
+ import { resolve } from "node:path";
3
+ import { loadAgent } from "../loader.js";
4
+ import { discoverAgent } from "../discover/index.js";
5
+ import { streamAgent } from "../runner/index.js";
6
+ import { showBanner } from "./banner.js";
7
+ export async function devCommand(options) {
8
+ const port = parseInt(options.port, 10);
9
+ const agentDirPath = resolve(process.cwd(), options.agentDir);
10
+ showBanner();
11
+ const { agent: discovered, diagnostics } = discoverAgent(agentDirPath);
12
+ if (diagnostics.some((d) => d.severity === "error")) {
13
+ for (const d of diagnostics) {
14
+ console.error(` ✖ ${d.code}: ${d.message}`);
15
+ }
16
+ process.exit(1);
17
+ }
18
+ for (const d of diagnostics) {
19
+ console.warn(` ⚠ ${d.code}: ${d.message}`);
20
+ }
21
+ console.log(` Agent: ${agentDirPath}`);
22
+ console.log(` Server: http://localhost:${port}`);
23
+ console.log();
24
+ if (discovered.agentConfig) {
25
+ try {
26
+ const agent = await loadAgent(agentDirPath);
27
+ console.log(` Model: ${agent.manifest.config.model}`);
28
+ console.log(` Tools: ${Object.keys(agent.manifest.tools).length}`);
29
+ console.log();
30
+ }
31
+ catch { }
32
+ }
33
+ const server = createServer(async (req, res) => {
34
+ if (req.method === "POST" && req.url === "/") {
35
+ let body = "";
36
+ for await (const chunk of req)
37
+ body += chunk;
38
+ try {
39
+ const { message, stream } = JSON.parse(body);
40
+ if (stream) {
41
+ res.writeHead(200, {
42
+ "Content-Type": "application/x-ndjson",
43
+ "Cache-Control": "no-cache",
44
+ Connection: "keep-alive",
45
+ });
46
+ for await (const event of streamAgent(agentDirPath, message)) {
47
+ res.write(JSON.stringify(event) + "\n");
48
+ }
49
+ res.end();
50
+ }
51
+ else {
52
+ res.writeHead(200, { "Content-Type": "application/json" });
53
+ for await (const event of streamAgent(agentDirPath, message)) { }
54
+ const result = await loadAgent(agentDirPath).then((a) => a.manifest.config);
55
+ res.end(JSON.stringify({ status: "ok" }));
56
+ }
57
+ }
58
+ catch (err) {
59
+ res.writeHead(500, { "Content-Type": "application/json" });
60
+ res.end(JSON.stringify({ error: String(err) }));
61
+ }
62
+ }
63
+ else {
64
+ res.writeHead(404);
65
+ res.end("Not found");
66
+ }
67
+ });
68
+ server.listen(port, () => {
69
+ console.log(` Listening on http://localhost:${port}`);
70
+ console.log(` POST / with { "message": "hello" }`);
71
+ console.log();
72
+ });
73
+ }
74
+ //# sourceMappingURL=dev.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/cli/dev.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,43 @@
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);
43
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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"}
@@ -0,0 +1,4 @@
1
+ export declare function initCommand(name: string | undefined, options: {
2
+ template: string;
3
+ }): Promise<void>;
4
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAOA,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,OAAO,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC5B,OAAO,CAAC,IAAI,CAAC,CA8Bf"}
@@ -0,0 +1,75 @@
1
+ import { mkdirSync, writeFileSync, existsSync, readFileSync, readdirSync, statSync, copyFileSync } from "node:fs";
2
+ import { resolve, join, dirname } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ const __dirname = dirname(fileURLToPath(import.meta.url));
5
+ const TEMPLATES_DIR = resolve(__dirname, "../../templates");
6
+ export async function initCommand(name, options) {
7
+ const targetDir = name
8
+ ? resolve(process.cwd(), name)
9
+ : resolve(process.cwd(), ".");
10
+ if (existsSync(targetDir) && name) {
11
+ console.error(`Directory already exists: ${targetDir}`);
12
+ process.exit(1);
13
+ }
14
+ const templateDir = resolve(TEMPLATES_DIR, options.template);
15
+ if (!existsSync(templateDir)) {
16
+ console.error(`Template not found: ${options.template}`);
17
+ process.exit(1);
18
+ }
19
+ console.log(`\n Scaffolding agent in ${targetDir}...\n`);
20
+ copyTemplate(templateDir, targetDir);
21
+ if (name) {
22
+ updatePackageJson(targetDir, name);
23
+ }
24
+ console.log(` Done! Created agent in ${targetDir}`);
25
+ console.log(`\n Next steps:`);
26
+ console.log(` cd ${name || "."}`);
27
+ console.log(` npm install`);
28
+ console.log(` npm run dev`);
29
+ console.log();
30
+ }
31
+ function copyTemplate(src, dest) {
32
+ const entries = collectFiles(src);
33
+ for (const entry of entries) {
34
+ const relative = entry.replace(src, "").replace(/^\//, "");
35
+ const destPath = join(dest, relative);
36
+ if (entry.endsWith(".gitkeep")) {
37
+ const parentDir = destPath.replace("/.gitkeep", "");
38
+ mkdirSync(parentDir, { recursive: true });
39
+ writeFileSync(join(parentDir, ".gitkeep"), "");
40
+ continue;
41
+ }
42
+ mkdirSync(dirname(destPath), { recursive: true });
43
+ if (entry.endsWith(".ts") || entry.endsWith(".md") || entry.endsWith(".json")) {
44
+ const content = readFileSync(entry, "utf-8");
45
+ writeFileSync(destPath, content);
46
+ }
47
+ else {
48
+ copyFileSync(entry, destPath);
49
+ }
50
+ }
51
+ }
52
+ function collectFiles(dir) {
53
+ const files = [];
54
+ const entries = readdirSync(dir);
55
+ for (const entry of entries) {
56
+ const fullPath = join(dir, entry);
57
+ const stat = statSync(fullPath);
58
+ if (stat.isDirectory()) {
59
+ files.push(...collectFiles(fullPath));
60
+ }
61
+ else {
62
+ files.push(fullPath);
63
+ }
64
+ }
65
+ return files;
66
+ }
67
+ function updatePackageJson(targetDir, projectName) {
68
+ const pkgPath = join(targetDir, "package.json");
69
+ if (existsSync(pkgPath)) {
70
+ const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
71
+ pkg.name = projectName;
72
+ writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + "\n");
73
+ }
74
+ }
75
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAMxD,wBAAgB,UAAU,IAAI,OAAO,GAAG,IAAI,CAE3C;AAED,wBAAgB,OAAO,IAAI,WAAW,GAAG,IAAI,CAE5C;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAEjD;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAE/C;AAED,wBAAgB,UAAU,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAElE;AAED,wBAAgB,cAAc,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,CAM1D;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAE5D;AAED,wBAAgB,aAAa,CAAC,CAAC,EAC7B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,CAAC,GACf,CAAC,CAKH"}
@@ -0,0 +1,38 @@
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
+ }
38
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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"}
@@ -0,0 +1,31 @@
1
+ export interface DiscoveredSlot {
2
+ name: string;
3
+ filePath: string;
4
+ type: "markdown" | "module";
5
+ kind: "flat" | "named";
6
+ }
7
+ export interface DiscoveredAgent {
8
+ root: string;
9
+ agentConfig?: string;
10
+ instructions?: string;
11
+ tools: DiscoveredSlot[];
12
+ skills: DiscoveredSlot[];
13
+ hooks: DiscoveredSlot[];
14
+ channels: DiscoveredSlot[];
15
+ schedules: DiscoveredSlot[];
16
+ connections: DiscoveredSlot[];
17
+ subagents: DiscoveredSlot[];
18
+ lib: DiscoveredSlot[];
19
+ }
20
+ export interface DiscoverDiagnostic {
21
+ code: string;
22
+ message: string;
23
+ severity: "error" | "warning";
24
+ filePath?: string;
25
+ }
26
+ export interface DiscoverResult {
27
+ agent: DiscoveredAgent;
28
+ diagnostics: DiscoverDiagnostic[];
29
+ }
30
+ export declare function discoverAgent(agentDir: string): DiscoverResult;
31
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/discover/index.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC5B,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,GAAG,EAAE,cAAc,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,eAAe,CAAC;IACvB,WAAW,EAAE,kBAAkB,EAAE,CAAC;CACnC;AASD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CA8B9D"}