augure 0.1.0 → 0.2.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.
package/README.md ADDED
@@ -0,0 +1,60 @@
1
+ # augure
2
+
3
+ A personal AI agent that sees, learns & acts. Deploy in 5 minutes. Own your data.
4
+
5
+ [![npm version](https://img.shields.io/npm/v/augure?color=%23f59e0b&label=npm&logo=npm&logoColor=white)](https://www.npmjs.com/package/augure)
6
+ [![MIT License](https://img.shields.io/github/license/FaureAlexis/augure?color=%23f59e0b)](https://github.com/FaureAlexis/augure/blob/master/LICENSE)
7
+ [![CI](https://img.shields.io/github/actions/workflow/status/FaureAlexis/augure/ci.yml?branch=master&label=CI&logo=github)](https://github.com/FaureAlexis/augure/actions)
8
+
9
+ ## Quick Start
10
+
11
+ ```bash
12
+ npm install -g augure
13
+ augure init # generates augure.json5 + .env
14
+ augure start # start the agent
15
+ ```
16
+
17
+ Or with Docker Compose:
18
+
19
+ ```bash
20
+ git clone https://github.com/FaureAlexis/augure.git && cd augure
21
+ cp .env.example .env
22
+ cp config/augure.example.json5 config/augure.json5
23
+ docker compose up -d
24
+ ```
25
+
26
+ ## What is Augure?
27
+
28
+ Augure is an open-source AI agent built on six primitives: **think, execute, remember, communicate, watch, learn**. It runs 24/7 on your server, connects to your messaging apps, learns your preferences, and acts proactively on a schedule.
29
+
30
+ - **Filesystem-first** — Memory, config, logs: everything is human-readable files. No vector DB.
31
+ - **Proactive** — Cron jobs, heartbeat monitoring, and actions on your behalf 24/7.
32
+ - **Secure by default** — All execution in Docker containers. Credentials never touch disk.
33
+ - **Self-improving** — Generates reusable skills, tests them, and auto-heals on failure.
34
+ - **Cost-aware** — Per-usage model routing. Cheap models for monitoring, full models for reasoning.
35
+ - **Readable** — Under 5K lines of source code.
36
+
37
+ ## Commands
38
+
39
+ | Command | Description |
40
+ |---------|-------------|
41
+ | `augure init` | Generate `augure.json5` and `.env` templates |
42
+ | `augure start` | Start the agent |
43
+ | `augure start --config path/to/config.json5` | Start with a custom config path |
44
+ | `augure --version` | Print version |
45
+ | `augure --help` | Show help |
46
+
47
+ ## Configuration
48
+
49
+ `augure init` generates two files:
50
+
51
+ - **`augure.json5`** — Agent config: identity, LLM provider, channels, memory, scheduler, tools, sandbox, skills, security
52
+ - **`.env`** — API keys (`OPENROUTER_API_KEY`, `TELEGRAM_BOT_TOKEN`)
53
+
54
+ ## Documentation
55
+
56
+ Full docs at **[augure.dev](https://augure.dev)**
57
+
58
+ ## License
59
+
60
+ [MIT](https://github.com/FaureAlexis/augure/blob/master/LICENSE)
package/dist/bin.js CHANGED
@@ -3,6 +3,7 @@ import { createRequire } from "node:module";
3
3
  import { defineCommand, runMain } from "citty";
4
4
  import { startCommand } from "./commands/start.js";
5
5
  import { initCommand } from "./commands/init.js";
6
+ import { skillsCommand } from "./commands/skills.js";
6
7
  const require = createRequire(import.meta.url);
7
8
  const { version } = require("../package.json");
8
9
  const main = defineCommand({
@@ -14,6 +15,7 @@ const main = defineCommand({
14
15
  subCommands: {
15
16
  start: startCommand,
16
17
  init: initCommand,
18
+ skills: skillsCommand,
17
19
  },
18
20
  });
19
21
  runMain(main);
package/dist/bin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAEtE,MAAM,IAAI,GAAG,aAAa,CAAC;IACzB,IAAI,EAAE;QACJ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,kCAAkC;QAC/C,OAAO;KACR;IACD,WAAW,EAAE;QACX,KAAK,EAAE,YAAY;QACnB,IAAI,EAAE,WAAW;KAClB;CACF,CAAC,CAAC;AAEH,OAAO,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAEtE,MAAM,IAAI,GAAG,aAAa,CAAC;IACzB,IAAI,EAAE;QACJ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,kCAAkC;QAC/C,OAAO;KACR;IACD,WAAW,EAAE;QACX,KAAK,EAAE,YAAY;QACnB,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,aAAa;KACtB;CACF,CAAC,CAAC;AAEH,OAAO,CAAC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ export declare const brand: (s: string) => string;
2
+ export declare const ok: (s: string) => string;
3
+ export declare const err: (s: string) => string;
4
+ export declare const dim: (s: string) => string;
5
+ export declare const bold: (s: string) => string;
6
+ export declare const cyan: (s: string) => string;
7
+ export declare const prefix: string;
8
+ //# sourceMappingURL=colors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../src/colors.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK,GAAI,GAAG,MAAM,WAA2B,CAAC;AAC3D,eAAO,MAAM,EAAE,GAAI,GAAG,MAAM,WAA0B,CAAC;AACvD,eAAO,MAAM,GAAG,GAAI,GAAG,MAAM,WAAwB,CAAC;AACtD,eAAO,MAAM,GAAG,GAAI,GAAG,MAAM,WAAwB,CAAC;AACtD,eAAO,MAAM,IAAI,GAAI,GAAG,MAAM,WAAyB,CAAC;AACxD,eAAO,MAAM,IAAI,GAAI,GAAG,MAAM,WAAyB,CAAC;AAExD,eAAO,MAAM,MAAM,QAAoB,CAAC"}
package/dist/colors.js ADDED
@@ -0,0 +1,9 @@
1
+ import { styleText } from "node:util";
2
+ export const brand = (s) => styleText("yellow", s);
3
+ export const ok = (s) => styleText("green", s);
4
+ export const err = (s) => styleText("red", s);
5
+ export const dim = (s) => styleText("dim", s);
6
+ export const bold = (s) => styleText("bold", s);
7
+ export const cyan = (s) => styleText("cyan", s);
8
+ export const prefix = brand("▲ augure");
9
+ //# sourceMappingURL=colors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.js","sourceRoot":"","sources":["../src/colors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAC3D,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACtD,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACtD,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACxD,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAExD,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAiFA,eAAO,MAAM,WAAW,qDA4BtB,CAAC"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAkFA,eAAO,MAAM,WAAW,qDA4BtB,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { defineCommand } from "citty";
2
2
  import { writeFile, access } from "node:fs/promises";
3
3
  import { resolve } from "node:path";
4
+ import { prefix, ok, dim, bold, cyan } from "../colors.js";
4
5
  const CONFIG_TEMPLATE = `{
5
6
  // Identity
6
7
  identity: {
@@ -85,23 +86,23 @@ export const initCommand = defineCommand({
85
86
  const configPath = resolve("augure.json5");
86
87
  const envPath = resolve(".env");
87
88
  if (await fileExists(configPath)) {
88
- console.log(`[augure] augure.json5 already exists, skipping.`);
89
+ console.log(`${prefix} ${dim("augure.json5 already exists, skipping.")}`);
89
90
  }
90
91
  else {
91
92
  await writeFile(configPath, CONFIG_TEMPLATE, "utf-8");
92
- console.log(`[augure] Created augure.json5`);
93
+ console.log(`${prefix} ${ok("Created")} augure.json5`);
93
94
  }
94
95
  if (await fileExists(envPath)) {
95
- console.log(`[augure] .env already exists, skipping.`);
96
+ console.log(`${prefix} ${dim(".env already exists, skipping.")}`);
96
97
  }
97
98
  else {
98
99
  await writeFile(envPath, ENV_TEMPLATE, "utf-8");
99
- console.log(`[augure] Created .env`);
100
+ console.log(`${prefix} ${ok("Created")} .env`);
100
101
  }
101
- console.log(`\nNext steps:`);
102
- console.log(` 1. Edit augure.json5 with your settings`);
103
- console.log(` 2. Fill in .env with your API keys`);
104
- console.log(` 3. Run: augure start`);
102
+ console.log(`\n${bold("Next steps:")}`);
103
+ console.log(` 1. Edit ${cyan("augure.json5")} with your settings`);
104
+ console.log(` 2. Fill in ${cyan(".env")} with your API keys`);
105
+ console.log(` 3. Run: ${bold("augure start")}`);
105
106
  },
106
107
  });
107
108
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2DvB,CAAC;AAEF,MAAM,YAAY,GAAG;;;;;CAKpB,CAAC;AAEF,KAAK,UAAU,UAAU,CAAC,IAAY;IACpC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC;IACvC,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,0DAA0D;KACxE;IACD,KAAK,CAAC,GAAG;QACP,MAAM,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAEhC,IAAI,MAAM,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;QACjE,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,CAAC,UAAU,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACvC,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACxC,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAE3D,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2DvB,CAAC;AAEF,MAAM,YAAY,GAAG;;;;;CAKpB,CAAC;AAEF,KAAK,UAAU,UAAU,CAAC,IAAY;IACpC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC;IACvC,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,0DAA0D;KACxE;IACD,KAAK,CAAC,GAAG;QACP,MAAM,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAEhC,IAAI,MAAM,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,GAAG,CAAC,wCAAwC,CAAC,EAAE,CAAC,CAAC;QAC5E,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,CAAC,UAAU,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,EAAE,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,GAAG,CAAC,gCAAgC,CAAC,EAAE,CAAC,CAAC;QACpE,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IACnD,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const skillsCommand: import("citty").CommandDef<import("citty").ArgsDef>;
2
+ //# sourceMappingURL=skills.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/commands/skills.ts"],"names":[],"mappings":"AAqPA,eAAO,MAAM,aAAa,qDAWxB,CAAC"}
@@ -0,0 +1,230 @@
1
+ import { defineCommand } from "citty";
2
+ import { resolve } from "node:path";
3
+ import { SkillManager, SkillRunner } from "@augure/skills";
4
+ import { DockerContainerPool } from "@augure/sandbox";
5
+ import { loadConfig } from "@augure/core";
6
+ import Dockerode from "dockerode";
7
+ import { prefix, ok, err, dim, bold, cyan } from "../colors.js";
8
+ async function createManager(configArg) {
9
+ const configPath = resolve(configArg);
10
+ const config = await loadConfig(configPath);
11
+ const skillsPath = resolve(configPath, "..", config.skills?.path ?? "./skills");
12
+ return { manager: new SkillManager(skillsPath), config, configPath };
13
+ }
14
+ function validateSkillId(id) {
15
+ if (!/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(id)) {
16
+ console.error(`${prefix} ${err(`Invalid skill ID: "${id}".`)} IDs must be lowercase alphanumeric with hyphens.`);
17
+ process.exit(1);
18
+ }
19
+ }
20
+ function statusColor(status) {
21
+ switch (status) {
22
+ case "active": return ok(status);
23
+ case "broken": return err(status);
24
+ case "paused":
25
+ case "draft":
26
+ case "testing": return dim(status);
27
+ default: return status;
28
+ }
29
+ }
30
+ const configArg = {
31
+ type: "string",
32
+ description: "Path to config file",
33
+ alias: "c",
34
+ default: "./augure.json5",
35
+ };
36
+ const listCommand = defineCommand({
37
+ meta: { name: "list", description: "List all skills with status" },
38
+ args: { config: configArg },
39
+ async run({ args }) {
40
+ const { manager } = await createManager(args.config);
41
+ const skills = await manager.list();
42
+ if (skills.length === 0) {
43
+ console.log(`${prefix} ${dim("No skills found.")}`);
44
+ return;
45
+ }
46
+ console.log(bold(["ID".padEnd(24), "NAME".padEnd(28), "STATUS".padEnd(10), "V".padEnd(4), "TRIGGER".padEnd(18), "UPDATED"].join("")));
47
+ for (const s of skills) {
48
+ const trigger = s.trigger.type === "cron"
49
+ ? `cron ${s.trigger.schedule}`
50
+ : s.trigger.type;
51
+ const updated = dim(s.updated.slice(0, 10));
52
+ console.log([
53
+ cyan(s.id.padEnd(24)),
54
+ s.name.slice(0, 26).padEnd(28),
55
+ statusColor(s.status).padEnd(10 + (statusColor(s.status).length - s.status.length)),
56
+ String(s.version).padEnd(4),
57
+ trigger.slice(0, 16).padEnd(18),
58
+ updated,
59
+ ].join(""));
60
+ }
61
+ },
62
+ });
63
+ const showCommand = defineCommand({
64
+ meta: { name: "show", description: "Show skill details" },
65
+ args: {
66
+ config: configArg,
67
+ id: { type: "positional", description: "Skill ID", required: true },
68
+ },
69
+ async run({ args }) {
70
+ validateSkillId(args.id);
71
+ const { manager } = await createManager(args.config);
72
+ try {
73
+ const skill = await manager.get(args.id);
74
+ console.log(`${bold("ID:")} ${cyan(skill.meta.id)}`);
75
+ console.log(`${bold("Name:")} ${skill.meta.name}`);
76
+ console.log(`${bold("Version:")} ${skill.meta.version}`);
77
+ console.log(`${bold("Status:")} ${statusColor(skill.meta.status)}`);
78
+ console.log(`${bold("Trigger:")} ${skill.meta.trigger.type}${skill.meta.trigger.schedule ? ` ${skill.meta.trigger.schedule}` : ""}`);
79
+ console.log(`${bold("Tags:")} ${skill.meta.tags.join(", ") || dim("(none)")}`);
80
+ console.log(`${bold("Created:")} ${dim(skill.meta.created)}`);
81
+ console.log(`${bold("Updated:")} ${dim(skill.meta.updated)}`);
82
+ console.log(`${bold("Code:")} ${skill.code ? ok("yes") : err("no")}`);
83
+ console.log(`${bold("Tests:")} ${skill.testCode ? ok("yes") : err("no")}`);
84
+ console.log("");
85
+ console.log(skill.body);
86
+ }
87
+ catch {
88
+ console.error(`${prefix} ${err(`Skill "${args.id}" not found.`)}`);
89
+ process.exit(1);
90
+ }
91
+ },
92
+ });
93
+ const runCommand = defineCommand({
94
+ meta: { name: "run", description: "Run a skill manually" },
95
+ args: {
96
+ config: configArg,
97
+ id: { type: "positional", description: "Skill ID", required: true },
98
+ },
99
+ async run({ args }) {
100
+ validateSkillId(args.id);
101
+ const { manager, config } = await createManager(args.config);
102
+ if (!(await manager.exists(args.id))) {
103
+ console.error(`${prefix} ${err(`Skill "${args.id}" not found.`)}`);
104
+ process.exit(1);
105
+ }
106
+ console.log(`${prefix} Running skill ${cyan(args.id)}...`);
107
+ const docker = new Dockerode();
108
+ const pool = new DockerContainerPool(docker, {
109
+ image: config.sandbox.image ?? "augure-sandbox:latest",
110
+ maxTotal: config.security.maxConcurrentSandboxes,
111
+ });
112
+ const runner = new SkillRunner({
113
+ pool,
114
+ manager,
115
+ defaults: config.sandbox.defaults,
116
+ });
117
+ try {
118
+ const result = await runner.run(args.id);
119
+ console.log(`${bold("Status:")} ${result.success ? ok("OK") : err("FAILED")}`);
120
+ console.log(`${bold("Duration:")} ${dim(`${result.durationMs}ms`)}`);
121
+ if (result.output)
122
+ console.log(`${bold("Output:")} ${result.output}`);
123
+ if (result.error)
124
+ console.error(`${bold("Error:")} ${err(result.error)}`);
125
+ if (!result.success)
126
+ process.exit(1);
127
+ }
128
+ finally {
129
+ try {
130
+ await pool.destroyAll();
131
+ }
132
+ catch { /* cleanup failure should not mask original error */ }
133
+ }
134
+ },
135
+ });
136
+ const pauseCommand = defineCommand({
137
+ meta: { name: "pause", description: "Pause a skill" },
138
+ args: {
139
+ config: configArg,
140
+ id: { type: "positional", description: "Skill ID", required: true },
141
+ },
142
+ async run({ args }) {
143
+ validateSkillId(args.id);
144
+ const { manager } = await createManager(args.config);
145
+ try {
146
+ await manager.updateStatus(args.id, "paused");
147
+ console.log(`${prefix} ${ok(`Skill "${args.id}" paused.`)}`);
148
+ }
149
+ catch {
150
+ console.error(`${prefix} ${err(`Skill "${args.id}" not found.`)}`);
151
+ process.exit(1);
152
+ }
153
+ },
154
+ });
155
+ const resumeCommand = defineCommand({
156
+ meta: { name: "resume", description: "Resume a paused skill" },
157
+ args: {
158
+ config: configArg,
159
+ id: { type: "positional", description: "Skill ID", required: true },
160
+ },
161
+ async run({ args }) {
162
+ validateSkillId(args.id);
163
+ const { manager } = await createManager(args.config);
164
+ try {
165
+ await manager.updateStatus(args.id, "active");
166
+ console.log(`${prefix} ${ok(`Skill "${args.id}" resumed.`)}`);
167
+ }
168
+ catch {
169
+ console.error(`${prefix} ${err(`Skill "${args.id}" not found.`)}`);
170
+ process.exit(1);
171
+ }
172
+ },
173
+ });
174
+ const deleteCommand = defineCommand({
175
+ meta: { name: "delete", description: "Delete a skill" },
176
+ args: {
177
+ config: configArg,
178
+ id: { type: "positional", description: "Skill ID", required: true },
179
+ },
180
+ async run({ args }) {
181
+ validateSkillId(args.id);
182
+ const { manager } = await createManager(args.config);
183
+ if (!(await manager.exists(args.id))) {
184
+ console.error(`${prefix} ${err(`Skill "${args.id}" not found.`)}`);
185
+ process.exit(1);
186
+ }
187
+ await manager.delete(args.id);
188
+ console.log(`${prefix} ${ok(`Skill "${args.id}" deleted.`)}`);
189
+ },
190
+ });
191
+ const logsCommand = defineCommand({
192
+ meta: { name: "logs", description: "Show recent execution logs for a skill" },
193
+ args: {
194
+ config: configArg,
195
+ id: { type: "positional", description: "Skill ID", required: true },
196
+ },
197
+ async run({ args }) {
198
+ validateSkillId(args.id);
199
+ const { manager } = await createManager(args.config);
200
+ const runs = await manager.getRuns(args.id, 10);
201
+ if (runs.length === 0) {
202
+ console.log(`${prefix} ${dim(`No runs found for skill "${args.id}".`)}`);
203
+ return;
204
+ }
205
+ console.log(bold(["TIMESTAMP".padEnd(26), "OK".padEnd(6), "DURATION".padEnd(12), "OUTPUT"].join("")));
206
+ for (const r of runs) {
207
+ const status = r.success ? ok("yes") : err("no ");
208
+ const output = (r.output ?? r.error ?? "").slice(0, 60);
209
+ console.log([
210
+ dim(r.timestamp.slice(0, 24).padEnd(26)),
211
+ (status + " ".repeat(Math.max(0, 6 - (r.success ? 3 : 3)))),
212
+ dim(`${r.durationMs}ms`.padEnd(12)),
213
+ r.success ? output : err(output),
214
+ ].join(""));
215
+ }
216
+ },
217
+ });
218
+ export const skillsCommand = defineCommand({
219
+ meta: { name: "skills", description: "Manage skills" },
220
+ subCommands: {
221
+ list: listCommand,
222
+ show: showCommand,
223
+ run: runCommand,
224
+ pause: pauseCommand,
225
+ resume: resumeCommand,
226
+ delete: deleteCommand,
227
+ logs: logsCommand,
228
+ },
229
+ });
230
+ //# sourceMappingURL=skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/commands/skills.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY;;;;;;;EA4BvB,CAAC"}
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,YAAY;;;;;;;EAyBvB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { defineCommand } from "citty";
2
2
  import { resolve } from "node:path";
3
+ import { prefix, dim, err } from "../colors.js";
3
4
  export const startCommand = defineCommand({
4
5
  meta: {
5
6
  name: "start",
@@ -15,13 +16,13 @@ export const startCommand = defineCommand({
15
16
  },
16
17
  async run({ args }) {
17
18
  const configPath = resolve(args.config);
18
- console.log(`[augure] Starting with config: ${configPath}`);
19
+ console.log(`${prefix} Starting with config: ${dim(configPath)}`);
19
20
  try {
20
21
  const { startAgent } = await import("@augure/core");
21
22
  await startAgent(configPath);
22
23
  }
23
- catch (err) {
24
- console.error("[augure] Fatal error:", err instanceof Error ? err.message : err);
24
+ catch (e) {
25
+ console.error(`${prefix} ${err("Fatal error:")} ${e instanceof Error ? e.message : e}`);
25
26
  process.exit(1);
26
27
  }
27
28
  },
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC;IACxC,IAAI,EAAE;QACJ,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,wBAAwB;KACtC;IACD,IAAI,EAAE;QACJ,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,qBAAqB;YAClC,KAAK,EAAE,GAAG;YACV,OAAO,EAAE,gBAAgB;SAC1B;KACF;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QAChB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,kCAAkC,UAAU,EAAE,CAAC,CAAC;QAE5D,IAAI,CAAC;YACH,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;YACpD,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CACX,uBAAuB,EACvB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CACzC,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC;IACxC,IAAI,EAAE;QACJ,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,wBAAwB;KACtC;IACD,IAAI,EAAE;QACJ,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,qBAAqB;YAClC,KAAK,EAAE,GAAG;YACV,OAAO,EAAE,gBAAgB;SAC1B;KACF;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QAChB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,0BAA0B,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAElE,IAAI,CAAC;YACH,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;YACpD,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACxF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;CACF,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "augure",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Augure — your proactive AI agent",
5
5
  "type": "module",
6
6
  "bin": {
@@ -12,25 +12,28 @@
12
12
  "engines": {
13
13
  "node": ">=22.0.0"
14
14
  },
15
- "scripts": {
16
- "build": "tsc",
17
- "dev": "tsc --watch",
18
- "test": "vitest run",
19
- "test:unit": "vitest run",
20
- "typecheck": "tsc --noEmit",
21
- "lint": "eslint src/",
22
- "clean": "rm -rf dist .turbo"
23
- },
24
15
  "dependencies": {
25
- "@augure/core": "workspace:*",
26
- "@augure/channels": "workspace:*",
27
- "@augure/memory": "workspace:*",
28
- "@augure/scheduler": "workspace:*",
29
- "@augure/tools": "workspace:*",
30
- "@augure/types": "workspace:*",
31
- "citty": "^0.2.1"
16
+ "citty": "^0.2.1",
17
+ "dockerode": "^4.0.7",
18
+ "@augure/core": "0.0.1",
19
+ "@augure/channels": "0.0.1",
20
+ "@augure/skills": "0.0.1",
21
+ "@augure/sandbox": "0.0.1",
22
+ "@augure/memory": "0.0.1",
23
+ "@augure/scheduler": "0.0.1",
24
+ "@augure/types": "0.0.1",
25
+ "@augure/tools": "0.0.1"
26
+ },
27
+ "devDependencies": {
28
+ "@types/dockerode": "^4.0.1"
32
29
  },
33
- "keywords": ["ai", "agent", "assistant", "telegram", "llm"],
30
+ "keywords": [
31
+ "ai",
32
+ "agent",
33
+ "assistant",
34
+ "telegram",
35
+ "llm"
36
+ ],
34
37
  "author": "Alexis",
35
38
  "license": "MIT",
36
39
  "repository": {
@@ -40,5 +43,14 @@
40
43
  },
41
44
  "publishConfig": {
42
45
  "access": "public"
46
+ },
47
+ "scripts": {
48
+ "build": "tsc",
49
+ "dev": "tsc --watch",
50
+ "test": "vitest run",
51
+ "test:unit": "vitest run",
52
+ "typecheck": "tsc --noEmit",
53
+ "lint": "eslint src/",
54
+ "clean": "rm -rf dist .turbo"
43
55
  }
44
- }
56
+ }