@a1hvdy/cc-openclaw 0.3.3 → 0.4.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 (101) hide show
  1. package/dist/src/channels/adapter.d.ts +0 -1
  2. package/dist/src/channels/telegram/completion-summary.d.ts +0 -1
  3. package/dist/src/channels/telegram/error-renderer.d.ts +0 -1
  4. package/dist/src/channels/telegram/event-reducer.d.ts +0 -1
  5. package/dist/src/channels/telegram/event-reducer.js +17 -3
  6. package/dist/src/channels/telegram/event-reducer.js.map +1 -1
  7. package/dist/src/channels/telegram/index.d.ts +0 -1
  8. package/dist/src/channels/telegram/injector.d.ts +0 -1
  9. package/dist/src/channels/telegram/live-card.d.ts +0 -1
  10. package/dist/src/channels/telegram/live-card.js +9 -2
  11. package/dist/src/channels/telegram/live-card.js.map +1 -1
  12. package/dist/src/channels/telegram/state-machine.d.ts +0 -1
  13. package/dist/src/channels/telegram/tool-tracker.d.ts +0 -1
  14. package/dist/src/command-router/cc-handler.d.ts +0 -1
  15. package/dist/src/command-router/cc-handler.js +52 -3
  16. package/dist/src/command-router/cc-handler.js.map +1 -1
  17. package/dist/src/command-router/index.d.ts +0 -1
  18. package/dist/src/constants.d.ts +0 -1
  19. package/dist/src/council/consensus.d.ts +0 -1
  20. package/dist/src/council/council.d.ts +0 -1
  21. package/dist/src/council/index.d.ts +0 -1
  22. package/dist/src/engines/base-oneshot-session.d.ts +0 -1
  23. package/dist/src/engines/index.d.ts +0 -1
  24. package/dist/src/engines/persistent-codex-session.d.ts +0 -1
  25. package/dist/src/engines/persistent-cursor-session.d.ts +0 -1
  26. package/dist/src/engines/persistent-custom-session.d.ts +0 -1
  27. package/dist/src/engines/persistent-gemini-session.d.ts +0 -1
  28. package/dist/src/engines/persistent-session.d.ts +0 -1
  29. package/dist/src/health/handler.d.ts +0 -1
  30. package/dist/src/health/index.d.ts +0 -1
  31. package/dist/src/health/metrics.d.ts +52 -0
  32. package/dist/src/health/metrics.js +116 -0
  33. package/dist/src/health/metrics.js.map +1 -0
  34. package/dist/src/index.d.ts +0 -1
  35. package/dist/src/index.js +15 -11
  36. package/dist/src/index.js.map +1 -1
  37. package/dist/src/lib/auto-recovery.d.ts +0 -1
  38. package/dist/src/lib/cache-parity.d.ts +0 -1
  39. package/dist/src/lib/circuit-breaker.d.ts +0 -1
  40. package/dist/src/lib/config.d.ts +0 -1
  41. package/dist/src/lib/debug-tap.d.ts +15 -0
  42. package/dist/src/lib/debug-tap.d.ts.map +1 -0
  43. package/dist/src/lib/debug-tap.js +185 -0
  44. package/dist/src/lib/debug-tap.js.map +1 -0
  45. package/dist/src/lib/drift-detector.d.ts +0 -1
  46. package/dist/src/lib/error-formatter.d.ts +2 -2
  47. package/dist/src/lib/error-formatter.js +16 -1
  48. package/dist/src/lib/error-formatter.js.map +1 -1
  49. package/dist/src/lib/heartbeat-workaround.d.ts +0 -1
  50. package/dist/src/lib/index.d.ts +0 -1
  51. package/dist/src/lib/register-guard.d.ts +25 -18
  52. package/dist/src/lib/register-guard.js +43 -22
  53. package/dist/src/lib/register-guard.js.map +1 -1
  54. package/dist/src/lib/route-flag.d.ts +0 -1
  55. package/dist/src/lib/status-tee-reader.d.ts +28 -0
  56. package/dist/src/lib/status-tee-reader.js +82 -0
  57. package/dist/src/lib/status-tee-reader.js.map +1 -0
  58. package/dist/src/lib/sysprompt-strip.d.ts +0 -1
  59. package/dist/src/lib/telemetry.d.ts +0 -1
  60. package/dist/src/lib/test-mode.d.ts +0 -1
  61. package/dist/src/lib/trajectory.d.ts +35 -0
  62. package/dist/src/lib/trajectory.js +84 -0
  63. package/dist/src/lib/trajectory.js.map +1 -0
  64. package/dist/src/lib/vendor-paths.d.ts +0 -1
  65. package/dist/src/logger.d.ts +0 -1
  66. package/dist/src/mcp/bridge.d.ts +0 -1
  67. package/dist/src/mcp/index.d.ts +0 -1
  68. package/dist/src/models.d.ts +0 -1
  69. package/dist/src/openai-compat/cli-stream-parser.d.ts +0 -1
  70. package/dist/src/openai-compat/index.d.ts +0 -1
  71. package/dist/src/openai-compat/openai-compat.d.ts +0 -1
  72. package/dist/src/openai-compat/openai-compat.js +73 -4
  73. package/dist/src/openai-compat/openai-compat.js.map +1 -1
  74. package/dist/src/openai-compat/skill-resolver.d.ts +0 -1
  75. package/dist/src/openai-compat/sse-translator.d.ts +0 -1
  76. package/dist/src/proxy/anthropic-adapter.d.ts +0 -1
  77. package/dist/src/proxy/handler.d.ts +0 -1
  78. package/dist/src/proxy/index.d.ts +0 -1
  79. package/dist/src/proxy/schema-cleaner.d.ts +0 -1
  80. package/dist/src/proxy/thought-cache.d.ts +0 -1
  81. package/dist/src/session/embedded-server.d.ts +0 -1
  82. package/dist/src/session/embedded-server.js +25 -1
  83. package/dist/src/session/embedded-server.js.map +1 -1
  84. package/dist/src/session/inbox-manager.d.ts +0 -1
  85. package/dist/src/session/index.d.ts +0 -1
  86. package/dist/src/session/session-manager.d.ts +0 -1
  87. package/dist/src/session/session-manager.js +25 -0
  88. package/dist/src/session/session-manager.js.map +1 -1
  89. package/dist/src/session-bootstrap/cwd-patch.d.ts +0 -1
  90. package/dist/src/session-bootstrap/index.d.ts +0 -1
  91. package/dist/src/session-bootstrap/sysprompt-strip.d.ts +0 -1
  92. package/dist/src/session-bootstrap/think-conflict-resolver.d.ts +0 -1
  93. package/dist/src/types.d.ts +0 -1
  94. package/dist/src/validation.d.ts +0 -1
  95. package/mcp-tools.json +1 -1
  96. package/package.json +31 -9
  97. package/vendor/embedded-server.js +13 -0
  98. package/dist/src/circuit-breaker.d.ts +0 -22
  99. package/dist/src/circuit-breaker.d.ts.map +0 -1
  100. package/dist/src/circuit-breaker.js +0 -47
  101. package/dist/src/circuit-breaker.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@a1hvdy/cc-openclaw",
3
- "version": "0.3.3",
3
+ "version": "0.4.5",
4
4
  "description": "A1xAI's Anthropic CLI bridge plugin for OpenClaw",
5
5
  "author": "@a1cy",
6
6
  "license": "MIT",
@@ -9,15 +9,33 @@
9
9
  "types": "dist/src/index.d.ts",
10
10
  "homepage": "https://github.com/A1cy/cc-openclaw",
11
11
  "repository": "github:A1cy/cc-openclaw",
12
- "engines": { "node": ">=22.0.0" },
12
+ "engines": {
13
+ "node": ">=22.0.0"
14
+ },
13
15
  "openclaw": {
14
- "extensions": ["./dist/src/index.js"],
16
+ "extensions": [
17
+ "./dist/src/index.js"
18
+ ],
15
19
  "hooks": {},
16
- "activation": { "onStartup": true }
20
+ "activation": {
21
+ "onStartup": true
22
+ }
17
23
  },
18
- "files": ["dist/", "vendor/", "configs/", "skills/", "openclaw.plugin.json", "README.md", "LICENSE", "mcp-config.template.json", "mcp-tools.json", "openclaw-mcp-bridge.cjs", "stubs/"],
24
+ "files": [
25
+ "dist/",
26
+ "vendor/",
27
+ "configs/",
28
+ "skills/",
29
+ "openclaw.plugin.json",
30
+ "README.md",
31
+ "LICENSE",
32
+ "mcp-config.template.json",
33
+ "mcp-tools.json",
34
+ "openclaw-mcp-bridge.cjs",
35
+ "stubs/"
36
+ ],
19
37
  "scripts": {
20
- "build": "tsc",
38
+ "build": "tsc -p tsconfig.build.json",
21
39
  "dev": "tsx watch src/index.ts",
22
40
  "test": "vitest run",
23
41
  "test:watch": "vitest",
@@ -28,8 +46,12 @@
28
46
  "format:check": "prettier -c .",
29
47
  "prepublishOnly": "npm run build && npm test"
30
48
  },
31
- "dependencies": { "commander": "^12.1.0" },
32
- "peerDependencies": { "openclaw": ">=2026.3.0" },
49
+ "dependencies": {
50
+ "commander": "^12.1.0"
51
+ },
52
+ "peerDependencies": {
53
+ "openclaw": ">=2026.3.0"
54
+ },
33
55
  "devDependencies": {
34
56
  "@eslint/js": "^9.15.0",
35
57
  "@types/node": "^22.10.0",
@@ -42,4 +64,4 @@
42
64
  "typescript-eslint": "^8.20.0",
43
65
  "vitest": "^3.1.0"
44
66
  }
45
- }
67
+ }
@@ -14,6 +14,10 @@ import { sanitizeCwd, validateRegex } from './validation.js';
14
14
  import { handleChatCompletion } from './openai-compat.js';
15
15
  import { getModelList } from './models.js';
16
16
  import { DEFAULT_SERVER_PORT, MAX_BODY_SIZE, RATE_LIMIT_MAX_REQUESTS, RATE_LIMIT_WINDOW_MS, OPENAI_COMPAT_SESSION_PREFIX, } from './constants.js';
17
+ // Pillar A v0.4.0 — metrics module. Lives in dist/ (TS-compiled), reachable
18
+ // via relative path since both vendor/ and dist/ are siblings under the
19
+ // plugin install root. Sync script always rebuilds dist/ so this resolves.
20
+ import { metricsRegistry, PROMETHEUS_CONTENT_TYPE } from '../dist/src/health/metrics.js';
17
21
  export class EmbeddedServer {
18
22
  server = null;
19
23
  manager;
@@ -294,6 +298,15 @@ export class EmbeddedServer {
294
298
  json(200, { ok: true, version: this.manager.getVersion(), sessions: this.manager.listSessions().length });
295
299
  return;
296
300
  }
301
+ // ─── Metrics (Pillar A v0.4.0) ─────────────────────────────
302
+ if (path === '/metrics') {
303
+ metricsRegistry.requestsTotal.inc({ status: 'success' });
304
+ metricsRegistry.workers.set(this.manager.listSessions().length);
305
+ const out = metricsRegistry.serializePrometheus();
306
+ res.writeHead(200, { 'Content-Type': PROMETHEUS_CONTENT_TYPE });
307
+ res.end(out);
308
+ return;
309
+ }
297
310
  // ─── OpenAI-Compatible Routes ─────────────────────────────
298
311
  if (path === '/v1/chat/completions') {
299
312
  await handleChatCompletion(this.manager, body, headers, res);
@@ -1,22 +0,0 @@
1
- /**
2
- * Circuit breaker for engine failure tracking.
3
- *
4
- * Opens after CIRCUIT_BREAKER_THRESHOLD consecutive failures per engine,
5
- * with exponential backoff capped at CIRCUIT_BREAKER_MAX_BACKOFF_MS.
6
- * Resets on a successful engine start.
7
- */
8
- export declare class CircuitBreaker {
9
- private breakers;
10
- /** Throws if the engine circuit is open and backoff has not yet expired. */
11
- check(engine: string): void;
12
- /** Record a failure — increments count and sets exponential backoff. */
13
- recordFailure(engine: string): void;
14
- /** Reset (clear) the breaker for an engine after a successful start. */
15
- reset(engine: string): void;
16
- /** Get status snapshot for health() reporting. */
17
- getStatus(): Record<string, {
18
- failures: number;
19
- backoffUntil: string | null;
20
- }>;
21
- }
22
- //# sourceMappingURL=circuit-breaker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../../src/circuit-breaker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAcH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAmC;IAEnD,4EAA4E;IAC5E,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAa3B,wEAAwE;IACxE,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAYnC,wEAAwE;IACxE,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI3B,kDAAkD;IAClD,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;CAW/E"}
@@ -1,47 +0,0 @@
1
- /**
2
- * Circuit breaker for engine failure tracking.
3
- *
4
- * Opens after CIRCUIT_BREAKER_THRESHOLD consecutive failures per engine,
5
- * with exponential backoff capped at CIRCUIT_BREAKER_MAX_BACKOFF_MS.
6
- * Resets on a successful engine start.
7
- */
8
- import { CIRCUIT_BREAKER_THRESHOLD, CIRCUIT_BREAKER_BACKOFF_BASE_MS, CIRCUIT_BREAKER_MAX_BACKOFF_MS, } from './constants.js';
9
- export class CircuitBreaker {
10
- breakers = new Map();
11
- /** Throws if the engine circuit is open and backoff has not yet expired. */
12
- check(engine) {
13
- const breaker = this.breakers.get(engine);
14
- if (!breaker)
15
- return;
16
- if (breaker.count >= CIRCUIT_BREAKER_THRESHOLD && Date.now() < breaker.backoffUntil) {
17
- const remaining = Math.ceil((breaker.backoffUntil - Date.now()) / 1000);
18
- throw new Error(`Engine '${engine}' circuit breaker open after ${breaker.count} consecutive failures. ` +
19
- `Retry in ${remaining}s.`);
20
- }
21
- // If backoff has expired, allow the attempt (will reset on success)
22
- }
23
- /** Record a failure — increments count and sets exponential backoff. */
24
- recordFailure(engine) {
25
- const existing = this.breakers.get(engine) || { count: 0, lastFailure: 0, backoffUntil: 0 };
26
- existing.count++;
27
- existing.lastFailure = Date.now();
28
- const backoff = Math.min(CIRCUIT_BREAKER_BACKOFF_BASE_MS * Math.pow(2, existing.count - 1), CIRCUIT_BREAKER_MAX_BACKOFF_MS);
29
- existing.backoffUntil = Date.now() + backoff;
30
- this.breakers.set(engine, existing);
31
- }
32
- /** Reset (clear) the breaker for an engine after a successful start. */
33
- reset(engine) {
34
- this.breakers.delete(engine);
35
- }
36
- /** Get status snapshot for health() reporting. */
37
- getStatus() {
38
- return Object.fromEntries([...this.breakers].map(([engine, state]) => [
39
- engine,
40
- {
41
- failures: state.count,
42
- backoffUntil: state.backoffUntil > Date.now() ? new Date(state.backoffUntil).toISOString() : null,
43
- },
44
- ]));
45
- }
46
- }
47
- //# sourceMappingURL=circuit-breaker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../../src/circuit-breaker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,yBAAyB,EACzB,+BAA+B,EAC/B,8BAA8B,GAC/B,MAAM,gBAAgB,CAAC;AAQxB,MAAM,OAAO,cAAc;IACjB,QAAQ,GAAG,IAAI,GAAG,EAAwB,CAAC;IAEnD,4EAA4E;IAC5E,KAAK,CAAC,MAAc;QAClB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,IAAI,OAAO,CAAC,KAAK,IAAI,yBAAyB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;YACpF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YACxE,MAAM,IAAI,KAAK,CACb,WAAW,MAAM,gCAAgC,OAAO,CAAC,KAAK,yBAAyB;gBACrF,YAAY,SAAS,IAAI,CAC5B,CAAC;QACJ,CAAC;QACD,oEAAoE;IACtE,CAAC;IAED,wEAAwE;IACxE,aAAa,CAAC,MAAc;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;QAC5F,QAAQ,CAAC,KAAK,EAAE,CAAC;QACjB,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CACtB,+BAA+B,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,EACjE,8BAA8B,CAC/B,CAAC;QACF,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;QAC7C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,wEAAwE;IACxE,KAAK,CAAC,MAAc;QAClB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,kDAAkD;IAClD,SAAS;QACP,OAAO,MAAM,CAAC,WAAW,CACvB,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;YAC1C,MAAM;YACN;gBACE,QAAQ,EAAE,KAAK,CAAC,KAAK;gBACrB,YAAY,EAAE,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI;aAClG;SACF,CAAC,CACH,CAAC;IACJ,CAAC;CACF"}