@a1hvdy/cc-openclaw 0.7.1 → 0.9.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/dist/src/command-router/cc-handler.js +11 -3
- package/dist/src/command-router/cc-handler.js.map +1 -1
- package/dist/src/engines/persistent-session.d.ts +1 -0
- package/dist/src/engines/persistent-session.js +35 -1
- package/dist/src/engines/persistent-session.js.map +1 -1
- package/dist/src/index.d.ts +10 -1
- package/dist/src/index.js +47 -7
- package/dist/src/index.js.map +1 -1
- package/dist/src/lib/config-service.d.ts +106 -0
- package/dist/src/lib/config-service.js +217 -0
- package/dist/src/lib/config-service.js.map +1 -0
- package/dist/src/lib/config.d.ts +33 -14
- package/dist/src/lib/config.js +147 -34
- package/dist/src/lib/config.js.map +1 -1
- package/dist/src/lib/index.d.ts +1 -1
- package/dist/src/lib/index.js +4 -1
- package/dist/src/lib/index.js.map +1 -1
- package/dist/src/openai-compat/message-extractor.d.ts +79 -0
- package/dist/src/openai-compat/message-extractor.js +134 -0
- package/dist/src/openai-compat/message-extractor.js.map +1 -0
- package/dist/src/openai-compat/mode-flags.d.ts +34 -0
- package/dist/src/openai-compat/mode-flags.js +44 -0
- package/dist/src/openai-compat/mode-flags.js.map +1 -0
- package/dist/src/openai-compat/non-streaming-handler.d.ts +26 -0
- package/dist/src/openai-compat/non-streaming-handler.js +108 -0
- package/dist/src/openai-compat/non-streaming-handler.js.map +1 -0
- package/dist/src/openai-compat/openai-compat.d.ts +15 -166
- package/dist/src/openai-compat/openai-compat.js +72 -817
- package/dist/src/openai-compat/openai-compat.js.map +1 -1
- package/dist/src/openai-compat/prompts.d.ts +47 -0
- package/dist/src/openai-compat/prompts.js +119 -0
- package/dist/src/openai-compat/prompts.js.map +1 -0
- package/dist/src/openai-compat/response-formatter.d.ts +33 -0
- package/dist/src/openai-compat/response-formatter.js +74 -0
- package/dist/src/openai-compat/response-formatter.js.map +1 -0
- package/dist/src/openai-compat/session-key-resolver.d.ts +41 -0
- package/dist/src/openai-compat/session-key-resolver.js +78 -0
- package/dist/src/openai-compat/session-key-resolver.js.map +1 -0
- package/dist/src/openai-compat/status-reporter.d.ts +30 -0
- package/dist/src/openai-compat/status-reporter.js +81 -0
- package/dist/src/openai-compat/status-reporter.js.map +1 -0
- package/dist/src/openai-compat/streaming-handler.d.ts +41 -0
- package/dist/src/openai-compat/streaming-handler.js +294 -0
- package/dist/src/openai-compat/streaming-handler.js.map +1 -0
- package/dist/src/openai-compat/tool-calls-parser.d.ts +34 -0
- package/dist/src/openai-compat/tool-calls-parser.js +93 -0
- package/dist/src/openai-compat/tool-calls-parser.js.map +1 -0
- package/dist/src/openai-compat/tool-results-serializer.d.ts +60 -0
- package/dist/src/openai-compat/tool-results-serializer.js +56 -0
- package/dist/src/openai-compat/tool-results-serializer.js.map +1 -0
- package/dist/src/session/session-manager.js +12 -0
- package/dist/src/session/session-manager.js.map +1 -1
- package/dist/src/session-bootstrap/cwd-patch.js +30 -13
- package/dist/src/session-bootstrap/cwd-patch.js.map +1 -1
- package/dist/src/types/index.d.ts +15 -0
- package/dist/src/types/index.js +16 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/src/types/route.d.ts +41 -0
- package/dist/src/types/route.js +12 -0
- package/dist/src/types/route.js.map +1 -0
- package/dist/src/types/runtime-config.d.ts +161 -0
- package/dist/src/types/runtime-config.js +118 -0
- package/dist/src/types/runtime-config.js.map +1 -0
- package/dist/src/types/session.d.ts +48 -0
- package/dist/src/types/session.js +20 -0
- package/dist/src/types/session.js.map +1 -0
- package/dist/src/types/sse.d.ts +38 -0
- package/dist/src/types/sse.js +12 -0
- package/dist/src/types/sse.js.map +1 -0
- package/dist/src/types/tool-bridge.d.ts +81 -0
- package/dist/src/types/tool-bridge.js +34 -0
- package/dist/src/types/tool-bridge.js.map +1 -0
- package/dist/src/types/upstream.d.ts +652 -0
- package/dist/src/types/upstream.js +145 -0
- package/dist/src/types/upstream.js.map +1 -0
- package/package.json +3 -2
- package/dist/src/lib/route-flag.d.ts +0 -49
- package/dist/src/lib/route-flag.js +0 -52
- package/dist/src/lib/route-flag.js.map +0 -1
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cluster A — Upstream config schemas.
|
|
3
|
+
*
|
|
4
|
+
* Validates files that cc-openclaw reads from outside its own tree:
|
|
5
|
+
* - `~/.openclaw/openclaw.json` (gateway config)
|
|
6
|
+
* - `<plugin-root>/openclaw.plugin.json` (plugin manifest)
|
|
7
|
+
*
|
|
8
|
+
* Schemas are intentionally LOOSE (`.passthrough()`) — cc-openclaw only
|
|
9
|
+
* cares about a handful of fields (plugins.allow, agents.list[id=main]
|
|
10
|
+
* primary model). Future fields openclaw upstream adds should not break
|
|
11
|
+
* the parse. Cluster C's `validate-upstream` phase will use these
|
|
12
|
+
* schemas as part of `expectedShape` checks for declared patches.
|
|
13
|
+
*
|
|
14
|
+
* NOT consumed yet — Cluster A first commit establishes the vocabulary.
|
|
15
|
+
* Cluster A step 5 (per PRP §14) threads `OpenClawConfigSchema` into the
|
|
16
|
+
* `cwd-patch.ts:903` model-guard reader.
|
|
17
|
+
*/
|
|
18
|
+
import { z } from 'zod';
|
|
19
|
+
// ── ~/.openclaw/openclaw.json ────────────────────────────────────────────────
|
|
20
|
+
// `model` accepts two shapes per cwd-patch.ts:922-923:
|
|
21
|
+
// - bare string: `"cc-openclaw/claude-opus-4-7"`
|
|
22
|
+
// - structured: `{ primary: "...", fallback?: ... }`
|
|
23
|
+
// Both are real shapes seen in the wild.
|
|
24
|
+
const AgentModelObjSchema = z
|
|
25
|
+
.object({
|
|
26
|
+
primary: z.string().optional(),
|
|
27
|
+
fallback: z.union([z.string(), z.array(z.string())]).optional(),
|
|
28
|
+
})
|
|
29
|
+
.passthrough();
|
|
30
|
+
const AgentModelSchema = z.union([z.string(), AgentModelObjSchema]);
|
|
31
|
+
const AgentEntrySchema = z
|
|
32
|
+
.object({
|
|
33
|
+
id: z.string(),
|
|
34
|
+
model: AgentModelSchema.optional(),
|
|
35
|
+
})
|
|
36
|
+
.passthrough();
|
|
37
|
+
const AgentsContainerSchema = z
|
|
38
|
+
.object({
|
|
39
|
+
list: z.array(AgentEntrySchema).optional(),
|
|
40
|
+
defaults: z.record(z.unknown()).optional(),
|
|
41
|
+
})
|
|
42
|
+
.passthrough();
|
|
43
|
+
// `agents` accepts two shapes in the wild:
|
|
44
|
+
// 1. Canonical (current openclaw): `agents: { list: [...], defaults: {...} }`
|
|
45
|
+
// 2. Legacy (older configs): `agents: [...]` — bare array
|
|
46
|
+
// The model-guard reader at cwd-patch.ts already handles both; the schema
|
|
47
|
+
// must accept both too or boot fails on legacy configs.
|
|
48
|
+
const AgentsBlockSchema = z.union([z.array(AgentEntrySchema), AgentsContainerSchema]);
|
|
49
|
+
export const OpenClawConfigSchema = z
|
|
50
|
+
.object({
|
|
51
|
+
plugins: z
|
|
52
|
+
.object({
|
|
53
|
+
allow: z.array(z.string()).optional(),
|
|
54
|
+
deny: z.array(z.string()).optional(),
|
|
55
|
+
})
|
|
56
|
+
.passthrough()
|
|
57
|
+
.optional(),
|
|
58
|
+
agents: AgentsBlockSchema.optional(),
|
|
59
|
+
channels: z.record(z.unknown()).optional(),
|
|
60
|
+
commands: z.record(z.unknown()).optional(),
|
|
61
|
+
})
|
|
62
|
+
.passthrough();
|
|
63
|
+
// ── openclaw.plugin.json (this plugin's own manifest) ────────────────────────
|
|
64
|
+
export const PluginManifestSchema = z
|
|
65
|
+
.object({
|
|
66
|
+
id: z.literal('cc-openclaw'),
|
|
67
|
+
enabledByDefault: z.boolean().optional(),
|
|
68
|
+
activation: z
|
|
69
|
+
.object({
|
|
70
|
+
onStartup: z.boolean().optional(),
|
|
71
|
+
})
|
|
72
|
+
.passthrough()
|
|
73
|
+
.optional(),
|
|
74
|
+
configSchema: z.record(z.unknown()).optional(),
|
|
75
|
+
capabilities: z
|
|
76
|
+
.object({
|
|
77
|
+
childProcess: z.boolean().optional(),
|
|
78
|
+
networkAccess: z.array(z.string()).optional(),
|
|
79
|
+
})
|
|
80
|
+
.passthrough()
|
|
81
|
+
.optional(),
|
|
82
|
+
})
|
|
83
|
+
.passthrough();
|
|
84
|
+
/**
|
|
85
|
+
* Extract the agent list from either of the two `agents` shapes:
|
|
86
|
+
* - direct array (legacy): `agents: [...]`
|
|
87
|
+
* - container (canonical): `agents: { list: [...] }`
|
|
88
|
+
* Returns `[]` when neither shape applies.
|
|
89
|
+
*/
|
|
90
|
+
export function getAgentList(cfg) {
|
|
91
|
+
const a = cfg.agents;
|
|
92
|
+
if (!a)
|
|
93
|
+
return [];
|
|
94
|
+
if (Array.isArray(a))
|
|
95
|
+
return a;
|
|
96
|
+
return a.list ?? [];
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Read the `agents.defaults.model.primary` (or top-level string) from an
|
|
100
|
+
* OpenClaw config, normalizing the same two shapes `model` may take:
|
|
101
|
+
* - string → returned as-is
|
|
102
|
+
* - { primary, fallback?, ... } → returned `.primary`
|
|
103
|
+
*/
|
|
104
|
+
export function getDefaultsPrimaryModel(cfg) {
|
|
105
|
+
const a = cfg.agents;
|
|
106
|
+
if (!a || Array.isArray(a))
|
|
107
|
+
return undefined;
|
|
108
|
+
const m = a.defaults && a.defaults.model;
|
|
109
|
+
if (typeof m === 'string')
|
|
110
|
+
return m;
|
|
111
|
+
if (m && typeof m === 'object' && 'primary' in m) {
|
|
112
|
+
const primary = m.primary;
|
|
113
|
+
return typeof primary === 'string' ? primary : undefined;
|
|
114
|
+
}
|
|
115
|
+
return undefined;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Find the `main` agent entry. Returns `undefined` when no entry has
|
|
119
|
+
* `id === 'main'` or when neither agents-shape is present.
|
|
120
|
+
* Used by the model-guard at `cwd-patch.ts:903-941`.
|
|
121
|
+
*/
|
|
122
|
+
export function findMainAgent(cfg) {
|
|
123
|
+
return getAgentList(cfg).find((a) => a.id === 'main');
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Read the primary model string for an agent entry. Mirrors the logic at
|
|
127
|
+
* cwd-patch.ts:922-923: `model` may be a bare string OR `{primary, …}`.
|
|
128
|
+
*/
|
|
129
|
+
export function getAgentPrimaryModel(agent) {
|
|
130
|
+
if (!agent)
|
|
131
|
+
return undefined;
|
|
132
|
+
const m = agent.model;
|
|
133
|
+
if (!m)
|
|
134
|
+
return undefined;
|
|
135
|
+
if (typeof m === 'string')
|
|
136
|
+
return m;
|
|
137
|
+
return m.primary;
|
|
138
|
+
}
|
|
139
|
+
/** Predicate for the model-guard warning at `cwd-patch.ts:903-941`. */
|
|
140
|
+
export function isClaudeRoutedModel(model) {
|
|
141
|
+
if (!model)
|
|
142
|
+
return false;
|
|
143
|
+
return model.startsWith('claude-local/') || model.startsWith('cc-openclaw/');
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=upstream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upstream.js","sourceRoot":"","sources":["../../../src/types/upstream.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@a1hvdy/cc-openclaw",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "A1xAI's Anthropic CLI bridge plugin for OpenClaw",
|
|
5
5
|
"author": "@a1cy",
|
|
6
6
|
"license": "MIT",
|
|
@@ -46,7 +46,8 @@
|
|
|
46
46
|
"prepublishOnly": "npm run build && npm test"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"commander": "^12.1.0"
|
|
49
|
+
"commander": "^12.1.0",
|
|
50
|
+
"zod": "^3.23.0"
|
|
50
51
|
},
|
|
51
52
|
"peerDependencies": {
|
|
52
53
|
"openclaw": ">=2026.3.0"
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Route flag — selects which engine handles new sessions.
|
|
3
|
-
*
|
|
4
|
-
* Primary env var (per PRP_v3 §10):
|
|
5
|
-
* `OPENCLAW_CC_OPENCLAW_ACTIVE=1` → 'cc-openclaw'
|
|
6
|
-
* `OPENCLAW_CC_OPENCLAW_ACTIVE=0` (or unset) → 'claude-local'
|
|
7
|
-
*
|
|
8
|
-
* Deprecated alias (maintained for one minor version):
|
|
9
|
-
* `OPENCLAW_USE_CC_OPENCLAW` — read iff ACTIVE name is unset.
|
|
10
|
-
* Will be removed in v0.2.0.
|
|
11
|
-
*
|
|
12
|
-
* Each call to selectEngine() observes the env AT CALL TIME — no caching.
|
|
13
|
-
* This satisfies PRP backward-compat contract #4: env-flag rollback works
|
|
14
|
-
* in both directions within session boundary, no restart needed.
|
|
15
|
-
*
|
|
16
|
-
* In-flight sessions stay on their original engine — that's a gateway-level
|
|
17
|
-
* property (each session captures its engine at session start). This module
|
|
18
|
-
* only decides routing for NEW session starts.
|
|
19
|
-
*
|
|
20
|
-
* Default 'claude-local' during the parallel period (P0–P5). Cutover at P6
|
|
21
|
-
* flips the default by setting OPENCLAW_CC_OPENCLAW_ACTIVE=1 in the runtime env.
|
|
22
|
-
*/
|
|
23
|
-
export type Engine = 'cc-openclaw' | 'claude-local';
|
|
24
|
-
/** Primary env var name (PRP_v3 §10). */
|
|
25
|
-
export declare const ACTIVE_FLAG_ENV = "OPENCLAW_CC_OPENCLAW_ACTIVE";
|
|
26
|
-
/**
|
|
27
|
-
* @deprecated Use `ACTIVE_FLAG_ENV`. Read for one minor version as a
|
|
28
|
-
* fallback when the new name is unset. Removed in v0.2.0.
|
|
29
|
-
*/
|
|
30
|
-
export declare const ROUTE_FLAG_ENV = "OPENCLAW_USE_CC_OPENCLAW";
|
|
31
|
-
/**
|
|
32
|
-
* Read env at call time. Prefers `OPENCLAW_CC_OPENCLAW_ACTIVE`; falls back to
|
|
33
|
-
* deprecated `OPENCLAW_USE_CC_OPENCLAW` only when the new name is unset.
|
|
34
|
-
* Returns true when value is '1', 'true', or 'on' (case-insensitive).
|
|
35
|
-
*/
|
|
36
|
-
export declare function isCcOpenclawEnabled(): boolean;
|
|
37
|
-
/** Select the engine for a new session. Default 'claude-local'. */
|
|
38
|
-
export declare function selectEngine(): Engine;
|
|
39
|
-
/**
|
|
40
|
-
* Capture the engine for a session at start time. Returns a frozen snapshot —
|
|
41
|
-
* subsequent calls to its current() method always return the captured value
|
|
42
|
-
* even if env later changes. This is what makes "in-flight sessions stay on
|
|
43
|
-
* original engine" architecturally true at the route-flag layer.
|
|
44
|
-
*/
|
|
45
|
-
export interface SessionRoute {
|
|
46
|
-
readonly engine: Engine;
|
|
47
|
-
readonly capturedAt: string;
|
|
48
|
-
}
|
|
49
|
-
export declare function captureSessionRoute(): SessionRoute;
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Route flag — selects which engine handles new sessions.
|
|
3
|
-
*
|
|
4
|
-
* Primary env var (per PRP_v3 §10):
|
|
5
|
-
* `OPENCLAW_CC_OPENCLAW_ACTIVE=1` → 'cc-openclaw'
|
|
6
|
-
* `OPENCLAW_CC_OPENCLAW_ACTIVE=0` (or unset) → 'claude-local'
|
|
7
|
-
*
|
|
8
|
-
* Deprecated alias (maintained for one minor version):
|
|
9
|
-
* `OPENCLAW_USE_CC_OPENCLAW` — read iff ACTIVE name is unset.
|
|
10
|
-
* Will be removed in v0.2.0.
|
|
11
|
-
*
|
|
12
|
-
* Each call to selectEngine() observes the env AT CALL TIME — no caching.
|
|
13
|
-
* This satisfies PRP backward-compat contract #4: env-flag rollback works
|
|
14
|
-
* in both directions within session boundary, no restart needed.
|
|
15
|
-
*
|
|
16
|
-
* In-flight sessions stay on their original engine — that's a gateway-level
|
|
17
|
-
* property (each session captures its engine at session start). This module
|
|
18
|
-
* only decides routing for NEW session starts.
|
|
19
|
-
*
|
|
20
|
-
* Default 'claude-local' during the parallel period (P0–P5). Cutover at P6
|
|
21
|
-
* flips the default by setting OPENCLAW_CC_OPENCLAW_ACTIVE=1 in the runtime env.
|
|
22
|
-
*/
|
|
23
|
-
/** Primary env var name (PRP_v3 §10). */
|
|
24
|
-
export const ACTIVE_FLAG_ENV = 'OPENCLAW_CC_OPENCLAW_ACTIVE';
|
|
25
|
-
/**
|
|
26
|
-
* @deprecated Use `ACTIVE_FLAG_ENV`. Read for one minor version as a
|
|
27
|
-
* fallback when the new name is unset. Removed in v0.2.0.
|
|
28
|
-
*/
|
|
29
|
-
export const ROUTE_FLAG_ENV = 'OPENCLAW_USE_CC_OPENCLAW';
|
|
30
|
-
/**
|
|
31
|
-
* Read env at call time. Prefers `OPENCLAW_CC_OPENCLAW_ACTIVE`; falls back to
|
|
32
|
-
* deprecated `OPENCLAW_USE_CC_OPENCLAW` only when the new name is unset.
|
|
33
|
-
* Returns true when value is '1', 'true', or 'on' (case-insensitive).
|
|
34
|
-
*/
|
|
35
|
-
export function isCcOpenclawEnabled() {
|
|
36
|
-
const v = process.env[ACTIVE_FLAG_ENV] ?? process.env[ROUTE_FLAG_ENV];
|
|
37
|
-
if (!v)
|
|
38
|
-
return false;
|
|
39
|
-
const norm = v.toLowerCase();
|
|
40
|
-
return norm === '1' || norm === 'true' || norm === 'on';
|
|
41
|
-
}
|
|
42
|
-
/** Select the engine for a new session. Default 'claude-local'. */
|
|
43
|
-
export function selectEngine() {
|
|
44
|
-
return isCcOpenclawEnabled() ? 'cc-openclaw' : 'claude-local';
|
|
45
|
-
}
|
|
46
|
-
export function captureSessionRoute() {
|
|
47
|
-
return Object.freeze({
|
|
48
|
-
engine: selectEngine(),
|
|
49
|
-
capturedAt: new Date().toISOString(),
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
//# sourceMappingURL=route-flag.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"route-flag.js","sourceRoot":"","sources":["../../../src/lib/route-flag.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,yCAAyC;AACzC,MAAM,CAAC,MAAM,eAAe,GAAG,6BAA6B,CAAC;AAE7D;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,0BAA0B,CAAC;AAEzD;;;;GAIG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACtE,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrB,MAAM,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7B,OAAO,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,IAAI,CAAC;AAC1D,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,YAAY;IAC1B,OAAO,mBAAmB,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC;AAChE,CAAC;AAaD,MAAM,UAAU,mBAAmB;IACjC,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,MAAM,EAAE,YAAY,EAAE;QACtB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACrC,CAAC,CAAC;AACL,CAAC"}
|