Files

202 lines
8.0 KiB
JSON

[
{
"id": "T01",
"file": "packages/bus/src/broker.mjs",
"old": "return THREAD_DEFINITIONS.includes(this.#business(business).roles[role]?.definition);",
"new": "return this.#business(business).roles[role]?.definition === 'assistant';",
"test": "packages/bus/tests/threads.test.mjs",
"pattern": "C2-09a: creative bindLaunch without a thread"
},
{
"id": "T02",
"file": "packages/bus/src/broker.mjs",
"old": ": identifier(a.instance);",
"new": ": instances[0];",
"test": "packages/bus/tests/threads.test.mjs",
"pattern": "C2-09a: explicit creative"
},
{
"id": "T03",
"file": "packages/bus/src/broker.mjs",
"old": "if (!instances.length || (a.instance !== undefined && !instances.includes(instance))) fail('thread-instance-missing');",
"new": "if (!instances.length) fail('thread-instance-missing');",
"test": "packages/bus/tests/threads.test.mjs",
"pattern": "C2-09a: explicit missing"
},
{
"id": "T04",
"file": "packages/bus/src/broker.mjs",
"old": "if (a.instance === undefined && instances.length > 1) fail('thread-instance-ambiguous');",
"new": "if (false) fail('thread-instance-ambiguous');",
"test": "packages/bus/tests/threads.test.mjs",
"pattern": "C2-09a: explicit creative"
},
{
"id": "T05",
"file": "packages/bus/src/broker.mjs",
"old": "!this.#granted(s, 'thread.create', identifier(a.project), instance)",
"new": "!this.#granted(s, 'thread.create', identifier(a.project), null)",
"test": "packages/bus/tests/user-principal.test.mjs",
"pattern": "C2-09a: naming an instance"
},
{
"id": "T06",
"file": "packages/cli/src/launcher.mjs",
"old": "const threaded = THREAD_DEFINITIONS.includes(b.roles[instance]?.definition);",
"new": "const threaded = b.roles[instance]?.definition === \"assistant\";",
"test": "packages/cli/tests/thread-launch.test.mjs",
"pattern": "C2-09a: creative thread messages"
},
{
"id": "T07",
"file": "packages/webui/src/serve.mjs",
"old": ".filter(([, entry]) => THREAD_DEFINITIONS.includes(entry?.definition))",
"new": ".filter(() => true)",
"test": "packages/webui/tests/chat-instances.test.mjs",
"pattern": "C2-09a metadata uses the human"
},
{
"id": "T08",
"file": "packages/webui/src/serve.mjs",
"old": "name: entry.vars?.['persona.name'] || instance",
"new": "name: instance",
"test": "packages/webui/tests/chat-instances.test.mjs",
"pattern": "C2-09a metadata uses the human"
},
{
"id": "T09",
"file": "packages/webui/src/chat-http.mjs",
"old": "(Object.hasOwn(v, 'instance') && (typeof v.instance !== 'string' || !KEY.test(v.instance)))",
"new": "false",
"test": "packages/webui/tests/chat.test.mjs",
"pattern": "C2-09a malformed instance"
},
{
"id": "T10",
"file": "packages/webui/src/chat.mjs",
"old": "createThread: ({ project, name, instance }) => channel('thread.create', { project, name, ...(instance === undefined ? {} : { instance }) }),",
"new": "createThread: ({ project, name, instance }) => channel('thread.create', { project, name }),",
"test": "packages/webui/tests/chat.test.mjs",
"pattern": "C2-09a createThread forwards"
},
{
"id": "T11",
"file": "packages/webui/src/public/chat.js",
"old": ": { project: key, name: f.name, instance: f.instance };",
"new": ": { project: key, name: f.name };",
"test": "packages/webui/tests/chat-browser.test.mjs",
"pattern": "C2-09a picker: no silent choice"
},
{
"id": "T12",
"file": "packages/webui/src/public/chat.js",
"old": "!f.instance && listed.rows.length === 1",
"new": "!f.instance && listed.rows.length >= 1",
"test": "packages/webui/tests/chat-browser.test.mjs",
"pattern": "C2-09a picker: no silent choice"
},
{
"id": "T13",
"file": "packages/webui/src/public/chat.js",
"old": "current.instanceError = \"Couldn't read the thread instances; reload to try again\";",
"new": "current.instanceError = '';",
"test": "packages/webui/tests/chat-browser.test.mjs",
"pattern": "C2-09a picker: metadata failure"
},
{
"id": "T14",
"file": "packages/webui/src/public/chat.js",
"old": "txt(row.name === row.instance ? row.instance : `${row.name} (${row.instance})`)",
"new": "txt(row.name)",
"test": "packages/webui/tests/chat-browser.test.mjs",
"pattern": "C2-09a picker: no silent choice"
},
{
"id": "T15",
"file": "packages/webui/src/public/chat.js",
"old": "if (f.instance && !listed.rows.some(row => row.instance === f.instance)) {",
"new": "if (false) {",
"test": "packages/webui/tests/chat-browser.test.mjs",
"pattern": "C2-09a picker: metadata failure"
},
{
"id": "T16",
"file": "packages/webui/src/public/chat.js",
"old": "f.instance = ''; f.instanceChosen = true;",
"new": "f.instance = ''; f.instanceChosen = false;",
"test": "packages/webui/tests/chat-browser.test.mjs",
"pattern": "C2-09a picker: metadata failure"
},
{
"id": "T17",
"file": "packages/webui/src/public/chat.js",
"old": "const unavailable = !project && (!!current.instanceError || !choices.some(row => row.instance === f.instance));",
"new": "const unavailable = false;",
"test": "packages/webui/tests/chat-browser.test.mjs",
"pattern": "C2-09a picker: no silent choice"
},
{
"id": "T18",
"file": "packages/webui/src/serve.mjs",
"old": "if (req.method !== 'GET') return json(res, 405, { error: 'method-not-allowed' });",
"new": "if (false) return json(res, 405, { error: 'method-not-allowed' });",
"test": "packages/webui/tests/chat-instances.test.mjs",
"pattern": "C2-09a metadata uses the human"
},
{
"id": "T19",
"file": "packages/webui/src/serve.mjs",
"old": "if (search) return json(res, 400, { error: 'invalid-request' });",
"new": "if (false) return json(res, 400, { error: 'invalid-request' });",
"test": "packages/webui/tests/chat-instances.test.mjs",
"pattern": "C2-09a metadata uses the human"
},
{
"id": "T20",
"file": "packages/webui/src/public/chat.js",
"old": "current.instances = listed.rows; current.instanceError = '';",
"new": "current.instances = listed.rows;",
"test": "packages/webui/tests/chat-browser.test.mjs",
"pattern": "C2-09a picker: metadata failure"
},
{
"id": "T21",
"file": "packages/webui/src/serve.mjs",
"old": "({ instance, name: entry.vars?.['persona.name'] || instance })",
"new": "({ instance, name: entry.vars?.['persona.name'] || instance, vars: entry.vars })",
"test": "packages/webui/tests/chat-instances.test.mjs",
"pattern": "C2-09a metadata uses the human"
},
{
"id": "T22",
"file": "packages/cli/src/launcher.mjs",
"old": "const threaded = THREAD_DEFINITIONS.includes(b.roles[r.instance]?.definition);",
"new": "const threaded = b.roles[r.instance]?.definition === \"assistant\";",
"test": "packages/cli/tests/thread-launch.test.mjs",
"pattern": "C2-09a: terminating one creative thread"
},
{
"id": "T23",
"file": "packages/cli/src/launcher.mjs",
"old": "const threaded = THREAD_DEFINITIONS.includes(b.roles[instance]?.definition);",
"new": "const threaded = b.roles[instance]?.definition === \"assistant\";",
"test": "packages/cli/tests/thread-launch.test.mjs",
"pattern": "C2-09a: fromSession refuses a creative instance outside a thread without a sandbox",
"additional_edits": [
{
"file": "packages/cli/src/launcher.mjs",
"old": "const threaded = THREAD_DEFINITIONS.includes(b.roles[r.instance]?.definition);",
"new": "const threaded = b.roles[r.instance]?.definition === \"assistant\";"
}
]
},
{
"id": "T24",
"file": "packages/bus/src/broker.mjs",
"old": "if (CREATIVE_DEFINITIONS.includes(this.#business(s.business).roles[s.role]?.definition)) fail('host-creative-role');",
"new": "void 0;",
"test": "packages/bus/tests/grant-executor.test.mjs",
"pattern": "sage-1908: once the agent of an applied grant is a creative role"
}
]