ccgateway 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/README.md +252 -0
  2. package/bin/ccg-dev.sh +3 -0
  3. package/dist/agents.d.ts +17 -0
  4. package/dist/agents.d.ts.map +1 -0
  5. package/dist/agents.js +45 -0
  6. package/dist/agents.js.map +1 -0
  7. package/dist/chat.d.ts +14 -0
  8. package/dist/chat.d.ts.map +1 -0
  9. package/dist/chat.js +104 -0
  10. package/dist/chat.js.map +1 -0
  11. package/dist/cli.d.ts +3 -0
  12. package/dist/cli.d.ts.map +1 -0
  13. package/dist/cli.js +501 -0
  14. package/dist/cli.js.map +1 -0
  15. package/dist/config.d.ts +53 -0
  16. package/dist/config.d.ts.map +1 -0
  17. package/dist/config.js +70 -0
  18. package/dist/config.js.map +1 -0
  19. package/dist/context.d.ts +45 -0
  20. package/dist/context.d.ts.map +1 -0
  21. package/dist/context.js +201 -0
  22. package/dist/context.js.map +1 -0
  23. package/dist/daemon.d.ts +27 -0
  24. package/dist/daemon.d.ts.map +1 -0
  25. package/dist/daemon.js +207 -0
  26. package/dist/daemon.js.map +1 -0
  27. package/dist/heartbeat.d.ts +42 -0
  28. package/dist/heartbeat.d.ts.map +1 -0
  29. package/dist/heartbeat.js +153 -0
  30. package/dist/heartbeat.js.map +1 -0
  31. package/dist/logger.d.ts +15 -0
  32. package/dist/logger.d.ts.map +1 -0
  33. package/dist/logger.js +70 -0
  34. package/dist/logger.js.map +1 -0
  35. package/dist/messaging.d.ts +43 -0
  36. package/dist/messaging.d.ts.map +1 -0
  37. package/dist/messaging.js +132 -0
  38. package/dist/messaging.js.map +1 -0
  39. package/dist/migrate.d.ts +24 -0
  40. package/dist/migrate.d.ts.map +1 -0
  41. package/dist/migrate.js +356 -0
  42. package/dist/migrate.js.map +1 -0
  43. package/dist/plugin.d.ts +63 -0
  44. package/dist/plugin.d.ts.map +1 -0
  45. package/dist/plugin.js +93 -0
  46. package/dist/plugin.js.map +1 -0
  47. package/dist/plugins/discord-gateway.d.ts +32 -0
  48. package/dist/plugins/discord-gateway.d.ts.map +1 -0
  49. package/dist/plugins/discord-gateway.js +208 -0
  50. package/dist/plugins/discord-gateway.js.map +1 -0
  51. package/dist/plugins/slack-gateway.d.ts +35 -0
  52. package/dist/plugins/slack-gateway.d.ts.map +1 -0
  53. package/dist/plugins/slack-gateway.js +291 -0
  54. package/dist/plugins/slack-gateway.js.map +1 -0
  55. package/dist/router.d.ts +44 -0
  56. package/dist/router.d.ts.map +1 -0
  57. package/dist/router.js +103 -0
  58. package/dist/router.js.map +1 -0
  59. package/dist/sessions.d.ts +55 -0
  60. package/dist/sessions.d.ts.map +1 -0
  61. package/dist/sessions.js +160 -0
  62. package/dist/sessions.js.map +1 -0
  63. package/dist/skills.d.ts +58 -0
  64. package/dist/skills.d.ts.map +1 -0
  65. package/dist/skills.js +194 -0
  66. package/dist/skills.js.map +1 -0
  67. package/dist/spawner.d.ts +29 -0
  68. package/dist/spawner.d.ts.map +1 -0
  69. package/dist/spawner.js +54 -0
  70. package/dist/spawner.js.map +1 -0
  71. package/dist/types.d.ts +22 -0
  72. package/dist/types.d.ts.map +1 -0
  73. package/dist/types.js +4 -0
  74. package/dist/types.js.map +1 -0
  75. package/package.json +48 -0
@@ -0,0 +1,54 @@
1
+ import { execFile } from "node:child_process";
2
+ // ── CCSpawner ──────────────────────────────────────────────────────────────
3
+ const DEFAULT_TIMEOUT_MS = 300_000; // 5 minutes
4
+ export class CCSpawner {
5
+ /**
6
+ * Spawn a `claude --print` invocation.
7
+ *
8
+ * Executes:
9
+ * claude --print -p "<message>" --append-system-prompt "<context>"
10
+ * --model <model> --allowedTools Tool1,Tool2,...
11
+ *
12
+ * Captures stdout as the response. Estimates tokens as chars / 4.
13
+ */
14
+ async spawn(options) {
15
+ const { workspace, message, systemPrompt, model, allowedTools, timeoutMs = DEFAULT_TIMEOUT_MS, } = options;
16
+ const args = [
17
+ "--print",
18
+ "--dangerously-skip-permissions",
19
+ "-p",
20
+ message,
21
+ "--append-system-prompt",
22
+ systemPrompt,
23
+ "--model",
24
+ model,
25
+ ];
26
+ // allowedTools intentionally omitted — agents have full access
27
+ // since we run with --dangerously-skip-permissions
28
+ return new Promise((resolve) => {
29
+ execFile("claude", args, {
30
+ cwd: workspace,
31
+ timeout: timeoutMs,
32
+ maxBuffer: 10 * 1024 * 1024, // 10 MB
33
+ encoding: "utf-8",
34
+ }, (error, stdout, stderr) => {
35
+ const response = (stdout || "").toString();
36
+ const exitCode = error ? error.code === "ETIMEDOUT"
37
+ ? 124
38
+ : error.status ?? 1
39
+ : 0;
40
+ const inputChars = message.length + systemPrompt.length;
41
+ const outputChars = response.length;
42
+ resolve({
43
+ response,
44
+ exitCode,
45
+ tokensEstimate: {
46
+ in: Math.ceil(inputChars / 4),
47
+ out: Math.ceil(outputChars / 4),
48
+ },
49
+ });
50
+ });
51
+ });
52
+ }
53
+ }
54
+ //# sourceMappingURL=spawner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawner.js","sourceRoot":"","sources":["../src/spawner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAmB9C,8EAA8E;AAE9E,MAAM,kBAAkB,GAAG,OAAO,CAAC,CAAC,YAAY;AAEhD,MAAM,OAAO,SAAS;IACpB;;;;;;;;OAQG;IACH,KAAK,CAAC,KAAK,CAAC,OAAqB;QAC/B,MAAM,EACJ,SAAS,EACT,OAAO,EACP,YAAY,EACZ,KAAK,EACL,YAAY,EACZ,SAAS,GAAG,kBAAkB,GAC/B,GAAG,OAAO,CAAC;QAEZ,MAAM,IAAI,GAAG;YACX,SAAS;YACT,gCAAgC;YAChC,IAAI;YACJ,OAAO;YACP,wBAAwB;YACxB,YAAY;YACZ,SAAS;YACT,KAAK;SACN,CAAC;QAEF,+DAA+D;QAC/D,mDAAmD;QAEnD,OAAO,IAAI,OAAO,CAAc,CAAC,OAAO,EAAE,EAAE;YAC1C,QAAQ,CACN,QAAQ,EACR,IAAI,EACJ;gBACE,GAAG,EAAE,SAAS;gBACd,OAAO,EAAE,SAAS;gBAClB,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,QAAQ;gBACrC,QAAQ,EAAE,OAAO;aAClB,EACD,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;gBACxB,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAE,KAA4D,CAAC,IAAI,KAAK,WAAW;oBACzG,CAAC,CAAC,GAAG;oBACL,CAAC,CAAE,KAAa,CAAC,MAAM,IAAI,CAAC;oBAC5B,CAAC,CAAC,CAAC,CAAC;gBAEN,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;gBACxD,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC;gBAEpC,OAAO,CAAC;oBACN,QAAQ;oBACR,QAAQ;oBACR,cAAc,EAAE;wBACd,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;wBAC7B,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;qBAChC;iBACF,CAAC,CAAC;YACL,CAAC,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,22 @@
1
+ export type { CcgConfig, AgentConfig, BindingConfig, PluginEntry, HeartbeatConfig, } from "./config.js";
2
+ export interface Attachment {
3
+ type: string;
4
+ url?: string;
5
+ data?: Buffer;
6
+ filename?: string;
7
+ }
8
+ export interface IncomingMessage {
9
+ from: {
10
+ gateway: string;
11
+ channel: string;
12
+ user: string;
13
+ userId: string;
14
+ messageId: string;
15
+ };
16
+ to: {
17
+ agent: string;
18
+ };
19
+ content: string;
20
+ attachments: Attachment[];
21
+ }
22
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAGA,YAAY,EACV,SAAS,EACT,WAAW,EACX,aAAa,EACb,WAAW,EACX,eAAe,GAChB,MAAM,aAAa,CAAC;AAIrB,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,EAAE,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B"}
package/dist/types.js ADDED
@@ -0,0 +1,4 @@
1
+ // ── Shared types ───────────────────────────────────────────────────────────
2
+ // Re-exported so every module can `import { ... } from "./types.js"`
3
+ export {};
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,qEAAqE"}
package/package.json ADDED
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "ccgateway",
3
+ "version": "0.1.0",
4
+ "description": "Multi-agent orchestration layer built on Claude Code CLI",
5
+ "type": "module",
6
+ "license": "MIT",
7
+ "author": "Denimar Fernandez",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "https://github.com/fdenimar/ccgateway"
11
+ },
12
+ "keywords": ["claude", "claude-code", "agents", "orchestration", "gateway", "cli", "clawdbot", "openclaw", "anthropic"],
13
+ "main": "./dist/config.js",
14
+ "types": "./dist/config.d.ts",
15
+ "exports": {
16
+ ".": {
17
+ "import": "./dist/config.js",
18
+ "types": "./dist/config.d.ts"
19
+ }
20
+ },
21
+ "files": [
22
+ "dist",
23
+ "bin",
24
+ "README.md"
25
+ ],
26
+ "bin": {
27
+ "ccg": "./dist/cli.js",
28
+ "ccg-dev": "./bin/ccg-dev.sh"
29
+ },
30
+ "scripts": {
31
+ "build": "tsc",
32
+ "prepublishOnly": "npm run build",
33
+ "dev": "tsx src/cli.ts",
34
+ "lint": "tsc --noEmit",
35
+ "test": "vitest run"
36
+ },
37
+ "dependencies": {
38
+ "@slack/bolt": "^4.6.0",
39
+ "commander": "^13.1.0",
40
+ "discord.js": "^14.26.2",
41
+ "tsx": "^4.19.4"
42
+ },
43
+ "devDependencies": {
44
+ "@types/node": "^22.14.1",
45
+ "typescript": "^5.8.3",
46
+ "vitest": "^3.1.1"
47
+ }
48
+ }