@a1hvdy/cc-openclaw 0.25.5 → 0.25.7

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.
@@ -30,8 +30,6 @@ export const MAX_STORE_SIZE = 100;
30
30
  const metadataStore = new Map();
31
31
  // ── Idempotency Guard ─────────────────────────────────────────────────────
32
32
  import { defaultRegisterGuard } from '../../lib/register-guard.js';
33
- import { emitSpeculativeThinking } from './speculative-bubble.js';
34
- import { notifyTyping } from '../../lib/perf/typing-prefetch.js';
35
33
  // ── Helpers ───────────────────────────────────────────────────────────────
36
34
  function isEnabled() {
37
35
  return process.env[ENV_FLAG] === 'true';
@@ -125,75 +123,6 @@ export function register(api) {
125
123
  // Non-claiming — let the message proceed to cc-handler or model
126
124
  return undefined;
127
125
  });
128
- // ── v0.24.0 default-path perf hooks: M9 spec-bubble + M2 first-arrival ──
129
- //
130
- // Second, independent before_dispatch registration. Deliberately NOT gated
131
- // on UX_BRIDGE_ALL_SESSIONS — this handler is responsible for perf wins
132
- // that should fire on every non-/cc Telegram message regardless of the
133
- // UX bridge flag. Flag-gated individually via:
134
- // - CC_OPENCLAW_PERF_TYPING_PREFETCH (M2 first-arrival prefetch)
135
- // - CC_OPENCLAW_PERF_SPEC_BUBBLE (M9 speculative "Thinking…" bubble)
136
- // Slash-prefixed messages (/cc, slash skills) are skipped to avoid
137
- // double-bubble with cc-handler's claim path.
138
- api.on('before_dispatch', async (...args) => {
139
- try {
140
- const event = args[0];
141
- const ctx = args[1];
142
- if (event.channel !== 'telegram')
143
- return undefined;
144
- const content = (typeof event.content === 'string'
145
- ? (event.content)
146
- : '').trim();
147
- if (content.startsWith('/'))
148
- return undefined;
149
- const sessionKey = ctx.sessionKey;
150
- if (!sessionKey)
151
- return undefined;
152
- const { chatId, threadId } = parseConversationId(ctx.conversationId ?? '');
153
- if (!chatId)
154
- return undefined;
155
- // M2 — first-arrival prefetch. The helper has its own 4s cooldown
156
- // (typing-prefetch.ts:WARMUP_COOLDOWN_MS) so calling per-message is safe;
157
- // duplicate calls within the cooldown are no-ops.
158
- if (process.env.CC_OPENCLAW_PERF_TYPING_PREFETCH === '1') {
159
- try {
160
- notifyTyping(chatId);
161
- }
162
- catch {
163
- // notifyTyping is sync + best-effort; never fail dispatch
164
- }
165
- }
166
- // M9 — speculative bubble. The helper has its own getPerfSpecBubbleEnabled()
167
- // check, so the outer env gate here is belt-and-braces. We persist the
168
- // returned message_id under sk:${sessionKey} so a future live-card
169
- // adoption pass (deferred to v0.25.0) can edit the same Telegram message
170
- // in place instead of sending a fresh ack.
171
- if (process.env.CC_OPENCLAW_PERF_SPEC_BUBBLE === '1') {
172
- void emitSpeculativeThinking({ chatId, threadId })
173
- .then((msgId) => {
174
- if (msgId == null)
175
- return;
176
- const UX_META = Symbol.for('telegram-ux-bridge:metadata');
177
- const store = globalThis[UX_META];
178
- if (store instanceof Map) {
179
- const existing = store.get(`sk:${sessionKey}`) ?? {};
180
- store.set(`sk:${sessionKey}`, {
181
- ...existing,
182
- speculativeAckMessageId: msgId,
183
- storedAt: Date.now(),
184
- });
185
- }
186
- })
187
- .catch(() => {
188
- // best-effort; never fail dispatch on a bubble error
189
- });
190
- }
191
- }
192
- catch {
193
- // any error in perf hooks must never claim/break dispatch
194
- }
195
- return undefined;
196
- });
197
126
  // ── before_tool_call: inject metadata into claude_session_send ────────
198
127
  //
199
128
  // When Savvy (GPT) decides to delegate and calls claude_session_send,
@@ -1 +1 @@
1
- {"version":3,"file":"injector.js","sourceRoot":"","sources":["../../../../src/channels/telegram/injector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"injector.js","sourceRoot":"","sources":["../../../../src/channels/telegram/injector.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,8 @@ import { dispatchCommand, parseSlash, COMMAND_HANDLERS } from './commands.js';
26
26
  import { sendTg, editTg } from '../../lib/telegram-bot-api.js';
27
27
  import { CallbackMap } from './callback-mapping.js';
28
28
  import { ComposeBuffer } from './compose-buffer.js';
29
+ import { TurnStateMachine } from './state-machine.js';
30
+ import { renderTurn } from './card-renderer.js';
29
31
  const PLUGIN_TAG = '[cc-openclaw/telegram-mirror/inbound]';
30
32
  /**
31
33
  * Parse Telegram chat id out of a session key. Session keys look like
@@ -115,23 +117,34 @@ async function forwardAction(action, threadId, logger) {
115
117
  * 2026-05-19): `dispatched /new` logged TWICE per single inbound /new
116
118
  * because two listeners both fired. v0.25.5 dedupes.
117
119
  */
118
- let _subscribed = false;
120
+ // v0.25.7 per-api subscription dedup (WeakSet keyed on the api object).
121
+ // v0.25.5 used a module-scope `_subscribed = false` boolean which dead-
122
+ // lettered the subscription when OpenClaw 2026.5.x called register(api)
123
+ // with a second distinct api object — the gateway's actual dispatch path
124
+ // uses that second binding, so the mirror went structurally dark on home.
125
+ // WeakSet keying restores api-scope dedup per the prior-art pattern in
126
+ // `src/lib/register-guard.ts` (memory `2026-05-06-cc-openclaw-hooks-dead-
127
+ // registry.md`). See PRPs/v0.25.7-subscription-binding-fix.md ADR-001.
128
+ let _subscribedApis = new WeakSet();
119
129
  const _states = new Set();
120
130
  /** Test-only — reset module-level subscription state. */
121
131
  export function _resetSubscriptionForTests() {
122
- _subscribed = false;
132
+ _subscribedApis = new WeakSet();
123
133
  _states.clear();
124
134
  }
125
135
  export function registerInboundHandler(api, state = createHandlerState()) {
126
136
  const logger = (api.logger ?? console);
127
137
  _states.add(state);
128
- if (_subscribed) {
129
- // Already subscribed once at module scope on a prior register() call
130
- // skip the api.on to prevent duplicate dispatch.
131
- process.stderr.write(`${PLUGIN_TAG} skip-resubscribe (already armed at module scope; new api binding shares state).\n`);
138
+ if (_subscribedApis.has(api)) {
139
+ // This exact api object has been wired up already (rare happens
140
+ // when register() is called twice with the same binding in a single
141
+ // process). Skip the api.on calls to prevent stacked listeners.
142
+ // A DIFFERENT api object falls through and gets its own subscriptions,
143
+ // which is what v0.25.5 broke and v0.25.7 restores.
144
+ process.stderr.write(`${PLUGIN_TAG} skip-resubscribe (api already in WeakSet — new api binding produces fresh subscription).\n`);
132
145
  return state;
133
146
  }
134
- _subscribed = true;
147
+ _subscribedApis.add(api);
135
148
  api.on('before_dispatch', async (...args) => {
136
149
  const event = args[0];
137
150
  if (!event)
@@ -186,6 +199,119 @@ export function registerInboundHandler(api, state = createHandlerState()) {
186
199
  process.stderr.write(`${dispatchLog}\n`);
187
200
  return { handled: true };
188
201
  });
202
+ // v0.25.6 — TURN RENDER PIPELINE. The M2 building blocks (TurnStateMachine,
203
+ // renderTurn) finally wire to live events here. On a non-slash inbound,
204
+ // we send a "▶ Working" card immediately so the user sees the agent
205
+ // received their message. As tool events fire, we edit the card. On
206
+ // reply_dispatch / finalize, we mark the card "✓ Done".
207
+ //
208
+ // Tool event shapes vary across gateway versions — we dump each shape
209
+ // ONCE on first arrival to stderr, so v0.25.7 can fix extraction with
210
+ // ground-truth data.
211
+ const cardState = new Map();
212
+ const shapeDumped = new Set();
213
+ function dumpShapeOnce(eventName, event) {
214
+ if (shapeDumped.has(eventName))
215
+ return;
216
+ shapeDumped.add(eventName);
217
+ try {
218
+ const dump = JSON.stringify(event, (_k, v) => (typeof v === 'function' ? '[Function]' : v));
219
+ process.stderr.write(`[cc-openclaw/telegram-mirror/turn] ${eventName} SHAPE (once): ${dump.slice(0, 1500)}\n`);
220
+ }
221
+ catch (err) {
222
+ process.stderr.write(`[cc-openclaw/telegram-mirror/turn] ${eventName} shape-dump failed: ${err.message}\n`);
223
+ }
224
+ }
225
+ // Re-subscribe before_dispatch to send a "▶ Working" card for non-slash
226
+ // inbound. Distinct handler from the slash dispatcher above to keep the
227
+ // two responsibilities independent.
228
+ api.on('before_dispatch', async (...args) => {
229
+ const event = args[0];
230
+ if (!event || event.channel !== 'telegram')
231
+ return undefined;
232
+ if (event.raw?.callback_query)
233
+ return undefined;
234
+ const text = (typeof event.content === 'string' ? event.content : undefined) ??
235
+ event.raw?.message?.text;
236
+ if (typeof text !== 'string')
237
+ return undefined;
238
+ // Skip if it's a known mirror slash — those are handled by the
239
+ // dispatcher above and shouldn't get a working card.
240
+ const parsed = parseSlash(text);
241
+ if (parsed && MIRROR_COMMANDS.has(parsed.cmd))
242
+ return undefined;
243
+ const fromKey = chatIdFromSessionKey(event.sessionKey);
244
+ let chatId = fromKey.chatId || (event.senderId !== undefined ? String(event.senderId) : '');
245
+ if (!chatId)
246
+ return undefined;
247
+ const threadId = fromKey.threadId !== undefined ? fromKey.threadId : event.raw?.message?.message_thread_id;
248
+ // Start a fresh turn for this chat. Replaces any prior turn state.
249
+ const sm = new TurnStateMachine();
250
+ sm.start(chatId);
251
+ try {
252
+ const res = await sendTg(chatId, renderTurn(sm.getTurn(chatId)), threadId !== undefined ? String(threadId) : undefined);
253
+ const msgId = res?.result?.message_id;
254
+ if (typeof msgId === 'number') {
255
+ cardState.set(chatId, { messageId: msgId, sm });
256
+ process.stderr.write(`[cc-openclaw/telegram-mirror/turn] working card sent: chat=${chatId} msg=${msgId} text=${JSON.stringify(text.slice(0, 60))}\n`);
257
+ }
258
+ }
259
+ catch (err) {
260
+ process.stderr.write(`[cc-openclaw/telegram-mirror/turn] working card send failed: ${err.message}\n`);
261
+ }
262
+ // Never claim — let the model handle the user message normally.
263
+ return undefined;
264
+ });
265
+ // Tool-call events — dump shapes once + best-effort apply to state machine.
266
+ api.on('before_tool_call', async (...args) => {
267
+ const event = args[0];
268
+ dumpShapeOnce('before_tool_call', event);
269
+ return undefined;
270
+ });
271
+ api.on('after_tool_call', async (...args) => {
272
+ const event = args[0];
273
+ dumpShapeOnce('after_tool_call', event);
274
+ return undefined;
275
+ });
276
+ api.on('before_agent_finalize', async (...args) => {
277
+ const event = args[0];
278
+ dumpShapeOnce('before_agent_finalize', event);
279
+ return undefined;
280
+ });
281
+ // reply_dispatch — finalize the working card by editing it to "✓ Done".
282
+ api.on('reply_dispatch', async (...args) => {
283
+ const event = args[0];
284
+ dumpShapeOnce('reply_dispatch', event);
285
+ // Try to extract chatId from the event. Fall back to a best-effort
286
+ // search across the cardState. On real gateway data, we'll know the
287
+ // exact field after the shape dump.
288
+ const ev = event;
289
+ const chatCandidate = ev?.sessionKey ??
290
+ (ev?.senderId !== undefined ? String(ev?.senderId) : undefined);
291
+ let chatId;
292
+ if (chatCandidate) {
293
+ const fromKey = chatIdFromSessionKey(chatCandidate);
294
+ chatId = fromKey.chatId || chatCandidate;
295
+ }
296
+ // If no chatId in event, finalize ALL active cards (rare; should
297
+ // only happen until we know the right field name).
298
+ const targets = chatId ? [chatId] : Array.from(cardState.keys());
299
+ for (const target of targets) {
300
+ const card = cardState.get(target);
301
+ if (!card)
302
+ continue;
303
+ card.sm.end(target);
304
+ try {
305
+ await editTg(target, card.messageId, renderTurn(card.sm.getTurn(target)));
306
+ }
307
+ catch (err) {
308
+ process.stderr.write(`[cc-openclaw/telegram-mirror/turn] finalize edit failed: ${err.message}\n`);
309
+ }
310
+ cardState.delete(target);
311
+ }
312
+ return undefined;
313
+ });
314
+ process.stderr.write(`${PLUGIN_TAG} turn-render pipeline armed (before_tool_call, after_tool_call, before_agent_finalize, reply_dispatch).\n`);
189
315
  logger.info(`${PLUGIN_TAG} subscribed to before_dispatch — ${MIRROR_COMMANDS.size} commands armed.`);
190
316
  // v0.25.2 — extra stderr breadcrumb so even if logger.info is swallowed
191
317
  // by the gateway's debug-tap wrapping, we still get proof of subscription.
@@ -1 +1 @@
1
- {"version":3,"file":"inbound-handler.js","sourceRoot":"","sources":["../../../../src/channels/telegram-mirror/inbound-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inbound-handler.js","sourceRoot":"","sources":["../../../../src/channels/telegram-mirror/inbound-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * M1 (perf overhaul idea #1) — resident-CLI pool per chat_id.
3
+ *
4
+ * Tracks per-chat persistent `claude` child handles. The actual spawn,
5
+ * stdin framing, and process supervision belong to session-manager —
6
+ * this module owns the (chatId → handle) map, the acquire/release
7
+ * lifecycle, and the idle-eviction watchdog.
8
+ *
9
+ * Flag: CC_OPENCLAW_PERF_RESIDENT_CLI (default OFF, medium risk —
10
+ * lifecycle/leak management requires watchdog).
11
+ *
12
+ * Eviction: handles idle longer than IDLE_TIMEOUT_MS are released. Cap
13
+ * at MAX_POOL_SIZE prevents unbounded growth on multi-chat workloads.
14
+ */
15
+ export declare const IDLE_TIMEOUT_MS: number;
16
+ export declare const MAX_POOL_SIZE = 32;
17
+ export interface ResidentCliHandle {
18
+ /** Opaque per-process identifier; session-manager owns the actual subprocess. */
19
+ pid: number;
20
+ chatId: string;
21
+ spawnedAt: number;
22
+ lastUsedAt: number;
23
+ }
24
+ export interface AcquireResult {
25
+ enabled: boolean;
26
+ handle: ResidentCliHandle | null;
27
+ reason: 'flag_off' | 'cached' | 'evicted_stale' | 'pool_full' | 'no_factory';
28
+ }
29
+ /** Register the actual spawn callback. Called by session-manager bootstrap. */
30
+ export declare function setHandleFactory(fn: ((chatId: string) => ResidentCliHandle | null) | null): void;
31
+ /**
32
+ * Acquire (or create) the resident handle for chatId. Evicts stale handles
33
+ * before serving new ones so the eviction work is amortized across acquires.
34
+ */
35
+ export declare function acquireResidentCli(chatId: string, now?: number): AcquireResult;
36
+ /** Release the handle (does not kill the subprocess; just marks idle). */
37
+ export declare function releaseResidentCli(chatId: string): boolean;
38
+ export declare function getPoolSize(): number;
39
+ export declare function _resetResidentCliPoolForTests(): void;
@@ -0,0 +1,60 @@
1
+ /**
2
+ * M1 (perf overhaul idea #1) — resident-CLI pool per chat_id.
3
+ *
4
+ * Tracks per-chat persistent `claude` child handles. The actual spawn,
5
+ * stdin framing, and process supervision belong to session-manager —
6
+ * this module owns the (chatId → handle) map, the acquire/release
7
+ * lifecycle, and the idle-eviction watchdog.
8
+ *
9
+ * Flag: CC_OPENCLAW_PERF_RESIDENT_CLI (default OFF, medium risk —
10
+ * lifecycle/leak management requires watchdog).
11
+ *
12
+ * Eviction: handles idle longer than IDLE_TIMEOUT_MS are released. Cap
13
+ * at MAX_POOL_SIZE prevents unbounded growth on multi-chat workloads.
14
+ */
15
+ import { getPerfResidentCliEnabled } from '../config.js';
16
+ export const IDLE_TIMEOUT_MS = 5 * 60_000;
17
+ export const MAX_POOL_SIZE = 32;
18
+ const pool = new Map();
19
+ let handleFactory = null;
20
+ /** Register the actual spawn callback. Called by session-manager bootstrap. */
21
+ export function setHandleFactory(fn) {
22
+ handleFactory = fn;
23
+ }
24
+ /**
25
+ * Acquire (or create) the resident handle for chatId. Evicts stale handles
26
+ * before serving new ones so the eviction work is amortized across acquires.
27
+ */
28
+ export function acquireResidentCli(chatId, now = Date.now()) {
29
+ if (!getPerfResidentCliEnabled())
30
+ return { enabled: false, handle: null, reason: 'flag_off' };
31
+ if (!chatId)
32
+ return { enabled: true, handle: null, reason: 'no_factory' };
33
+ // Evict stale handles first.
34
+ for (const [k, v] of pool) {
35
+ if (now - v.lastUsedAt > IDLE_TIMEOUT_MS)
36
+ pool.delete(k);
37
+ }
38
+ const existing = pool.get(chatId);
39
+ if (existing) {
40
+ existing.lastUsedAt = now;
41
+ return { enabled: true, handle: existing, reason: 'cached' };
42
+ }
43
+ if (pool.size >= MAX_POOL_SIZE) {
44
+ return { enabled: true, handle: null, reason: 'pool_full' };
45
+ }
46
+ if (!handleFactory)
47
+ return { enabled: true, handle: null, reason: 'no_factory' };
48
+ const handle = handleFactory(chatId);
49
+ if (!handle)
50
+ return { enabled: true, handle: null, reason: 'no_factory' };
51
+ pool.set(chatId, handle);
52
+ return { enabled: true, handle, reason: 'cached' };
53
+ }
54
+ /** Release the handle (does not kill the subprocess; just marks idle). */
55
+ export function releaseResidentCli(chatId) {
56
+ return pool.delete(chatId);
57
+ }
58
+ export function getPoolSize() { return pool.size; }
59
+ export function _resetResidentCliPoolForTests() { pool.clear(); handleFactory = null; }
60
+ //# sourceMappingURL=resident-cli-pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resident-cli-pool.js","sourceRoot":"","sources":["../../../../src/lib/perf/resident-cli-pool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAG,MAAM,CAAC;AAC1C,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC;AAUhC,MAAM,IAAI,GAAG,IAAI,GAAG,EAA6B,CAAC;AAQlD,IAAI,aAAa,GAA0D,IAAI,CAAC;AAEhF,+EAA+E;AAC/E,MAAM,UAAU,gBAAgB,CAAC,EAAyD;IACxF,aAAa,GAAG,EAAE,CAAC;AACrB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAc,EAAE,MAAc,IAAI,CAAC,GAAG,EAAE;IACzE,IAAI,CAAC,yBAAyB,EAAE;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAC9F,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IAC1E,6BAA6B;IAC7B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QAC1B,IAAI,GAAG,GAAG,CAAC,CAAC,UAAU,GAAG,eAAe;YAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,UAAU,GAAG,GAAG,CAAC;QAC1B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAC/D,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,IAAI,aAAa,EAAE,CAAC;QAC/B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAC9D,CAAC;IACD,IAAI,CAAC,aAAa;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IACjF,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IAC1E,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AACrD,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,WAAW,KAAa,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3D,MAAM,UAAU,6BAA6B,KAAW,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@a1hvdy/cc-openclaw",
3
- "version": "0.25.5",
3
+ "version": "0.25.7",
4
4
  "description": "A1xAI's Anthropic CLI bridge plugin for OpenClaw",
5
5
  "author": "@a1cy",
6
6
  "license": "MIT",
@@ -1,33 +0,0 @@
1
- /**
2
- * PatchSpec: sysprompt-strip
3
- *
4
- * Establishes the file convention for Phase E#3. NOT REGISTERED with any
5
- * PatchManifest yet — this is the documented template that real PatchSpec
6
- * files mirror as the cwd-patch.ts decomposition proceeds.
7
- *
8
- * Pattern for Phase E#3:
9
- * 1. One file per logical patch under `src/patches/<id>.spec.ts`.
10
- * 2. File <200 LOC (INITIAL.md §NF2).
11
- * 3. Exports a single `PatchSpec` instance as a named export.
12
- * 4. `resolve()` owns its upstream symbol lookup — no global target arg.
13
- * 5. `expectedShape` is sync, returns boolean; checks signature/props.
14
- * 6. `expectedBehavior` is async; runs a tiny invocation; <100ms.
15
- * 7. `install` + `uninstall` are paired and round-trip-safe.
16
- * 8. A companion `tests/patches/<id>.test.ts` proves shape + mutation necessity.
17
- *
18
- * Functional source for sysprompt-strip lives at `src/lib/sysprompt-strip.ts`
19
- * (pure function, reused as-is per INITIAL.md §Reuse). The wrapper that
20
- * registers it as a Claude Code prototype patch lives at
21
- * `src/session-bootstrap/sysprompt-strip.ts`. Phase E#3 converts that wrapper
22
- * into the structured PatchSpec form below.
23
- */
24
- import type { PatchSpec } from '../lifecycle/patch-manifest.js';
25
- /**
26
- * Placeholder target shape. Phase E#3 narrows this to the actual
27
- * SessionManager.prototype.startSession (or equivalent upstream symbol).
28
- */
29
- interface SyspromptStripTarget {
30
- readonly __placeholder: true;
31
- }
32
- export declare const syspromptStripSpec: PatchSpec<SyspromptStripTarget>;
33
- export {};
@@ -1,53 +0,0 @@
1
- /**
2
- * PatchSpec: sysprompt-strip
3
- *
4
- * Establishes the file convention for Phase E#3. NOT REGISTERED with any
5
- * PatchManifest yet — this is the documented template that real PatchSpec
6
- * files mirror as the cwd-patch.ts decomposition proceeds.
7
- *
8
- * Pattern for Phase E#3:
9
- * 1. One file per logical patch under `src/patches/<id>.spec.ts`.
10
- * 2. File <200 LOC (INITIAL.md §NF2).
11
- * 3. Exports a single `PatchSpec` instance as a named export.
12
- * 4. `resolve()` owns its upstream symbol lookup — no global target arg.
13
- * 5. `expectedShape` is sync, returns boolean; checks signature/props.
14
- * 6. `expectedBehavior` is async; runs a tiny invocation; <100ms.
15
- * 7. `install` + `uninstall` are paired and round-trip-safe.
16
- * 8. A companion `tests/patches/<id>.test.ts` proves shape + mutation necessity.
17
- *
18
- * Functional source for sysprompt-strip lives at `src/lib/sysprompt-strip.ts`
19
- * (pure function, reused as-is per INITIAL.md §Reuse). The wrapper that
20
- * registers it as a Claude Code prototype patch lives at
21
- * `src/session-bootstrap/sysprompt-strip.ts`. Phase E#3 converts that wrapper
22
- * into the structured PatchSpec form below.
23
- */
24
- export const syspromptStripSpec = {
25
- id: 'sysprompt-strip',
26
- targetModule: 'claude-code/dist/session/SessionManager',
27
- targetSymbol: 'SessionManager.prototype.startSession',
28
- resolve() {
29
- // Phase E#3 — replace with:
30
- // const upstream = require('claude-code');
31
- // return upstream.SessionManager.prototype;
32
- return { __placeholder: true };
33
- },
34
- expectedShape(_target) {
35
- // Phase E#3 — verify SessionManager.prototype.startSession exists
36
- // as a function with the expected arity.
37
- return true;
38
- },
39
- async expectedBehavior(_target) {
40
- // Phase E#3 — call a stub startSession with a known sysprompt and
41
- // verify the stripped output round-trips through `stripSysprompt()`
42
- // at `src/lib/sysprompt-strip.ts`.
43
- return true;
44
- },
45
- install(_target) {
46
- // Phase E#3 — replace with the prototype-patch closure currently in
47
- // `src/session-bootstrap/sysprompt-strip.ts`.
48
- },
49
- uninstall(_target) {
50
- // Phase E#3 — restore the original SessionManager.prototype.startSession.
51
- },
52
- };
53
- //# sourceMappingURL=sysprompt-strip.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sysprompt-strip.spec.js","sourceRoot":"","sources":["../../../src/patches/sysprompt-strip.spec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAYH,MAAM,CAAC,MAAM,kBAAkB,GAAoC;IACjE,EAAE,EAAE,iBAAiB;IACrB,YAAY,EAAE,yCAAyC;IACvD,YAAY,EAAE,uCAAuC;IAErD,OAAO;QACL,4BAA4B;QAC5B,6CAA6C;QAC7C,8CAA8C;QAC9C,OAAO,EAAE,aAAa,EAAE,IAAI,EAA0B,CAAC;IACzD,CAAC;IAED,aAAa,CAAC,OAA6B;QACzC,kEAAkE;QAClE,yCAAyC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,OAA6B;QAClD,kEAAkE;QAClE,oEAAoE;QACpE,mCAAmC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,OAA6B;QACnC,oEAAoE;QACpE,8CAA8C;IAChD,CAAC;IAED,SAAS,CAAC,OAA6B;QACrC,0EAA0E;IAC5E,CAAC;CACF,CAAC"}