great-cto 3.43.0 → 3.45.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.
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "great-cto",
|
|
3
3
|
"description": "You already have the agent. This is everything around it. great_cto runs Claude Code as a pipeline of 71 specialist agents \u2014 an independent model checks each stage before the next builds on it, spending caps refuse rather than warn, and three decisions stay yours: what gets built, how, and whether it ships.",
|
|
4
|
-
"version": "3.
|
|
4
|
+
"version": "3.45.0",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Alexander Velikiy",
|
|
7
7
|
"url": "https://hashnode.com/@Greatcto"
|
|
@@ -5815,6 +5815,7 @@ function renderAgentActivity(snap) {
|
|
|
5815
5815
|
return `${esc(e.tool || 'tool')}${p}`;
|
|
5816
5816
|
}
|
|
5817
5817
|
if (e.kind === 'pipeline') return `pipeline: ${esc(e.outcome || '')}${e.verdict ? ' · ' + esc(e.verdict) : ''}`;
|
|
5818
|
+
if (e.kind === 'hint') return `hint: ${esc(e.hook || '')}${Array.isArray(e.paths) && e.paths.length ? ' ' + esc(e.paths[0]) : ''}${e.host === 'codex' ? ' · codex' : ''}`;
|
|
5818
5819
|
return esc(e.kind || '');
|
|
5819
5820
|
};
|
|
5820
5821
|
const attention = (Array.isArray(snap.attention) ? snap.attention : []).map((e) =>
|
|
@@ -28,8 +28,10 @@ import { appendFileSync, closeSync, fstatSync, mkdirSync, openSync, readFileSync
|
|
|
28
28
|
import { join } from 'node:path';
|
|
29
29
|
|
|
30
30
|
export const EVENTS_FILE = 'events.jsonl';
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
// `hint`: a context hook (edit-impact, lesson-tripwire) put text in front of the model.
|
|
32
|
+
// Recorded so its noise can be measured — how often, on what, how long — not what it said.
|
|
33
|
+
export const EVENT_KINDS = Object.freeze(['agent-start', 'agent-stop', 'tool', 'denied', 'stop', 'pipeline', 'hint']);
|
|
34
|
+
export const EVENT_FIELDS = Object.freeze(['v', 'ts', 'kind', 'session', 'agent', 'tool', 'paths', 'ok', 'duration_ms', 'outcome', 'verdict', 'hook', 'chars', 'host']);
|
|
33
35
|
export const MAX_BYTES = 5 * 1024 * 1024;
|
|
34
36
|
|
|
35
37
|
const MAX_PATHS = 10;
|
|
@@ -55,6 +57,9 @@ export function makeEvent(input, { now = Date.now() } = {}) {
|
|
|
55
57
|
if (Number.isFinite(input.duration_ms) && input.duration_ms >= 0) e.duration_ms = Math.round(input.duration_ms);
|
|
56
58
|
if (typeof input.outcome === 'string' && /^[a-z][a-z-]{0,39}$/.test(input.outcome)) e.outcome = input.outcome;
|
|
57
59
|
if (typeof input.verdict === 'string' && /^[A-Z][A-Z_-]{0,39}$/.test(input.verdict)) e.verdict = input.verdict;
|
|
60
|
+
if (typeof input.hook === 'string' && /^[a-z][a-z-]{0,39}$/.test(input.hook)) e.hook = input.hook;
|
|
61
|
+
if (Number.isInteger(input.chars) && input.chars >= 0) e.chars = input.chars;
|
|
62
|
+
if (input.host === 'claude' || input.host === 'codex') e.host = input.host;
|
|
58
63
|
return e;
|
|
59
64
|
}
|
|
60
65
|
|
package/dist/codex.js
CHANGED
|
@@ -48,13 +48,13 @@ export function codexInstallPlan({ repoDir, codexOnPath }) {
|
|
|
48
48
|
"skills — all of them, the same tree Claude Code reads",
|
|
49
49
|
"the MCP server (great_cto), resolved from npm",
|
|
50
50
|
"the controlled role pipeline — run `npx --yes great-cto codex-host doctor` then `npx --yes great-cto codex-host start`",
|
|
51
|
-
"six safety guards as Codex plugin hooks (destructive commands, gate bypasses, a neighbour session's work, secrets in files, frozen gates, weakened checks) — Codex asks you to review them once on the next interactive `codex` start; they do not run until you do",
|
|
51
|
+
"six safety guards as Codex plugin hooks (destructive commands, gate bypasses, a neighbour session's work, secrets in files, frozen gates, weakened checks) and two hints that never block (edit-impact, lesson-tripwire) — Codex asks you to review them once on the next interactive `codex` start; they do not run until you do",
|
|
52
52
|
],
|
|
53
53
|
// Codex runs plugin hooks (verified 2026-09-28, codex-cli 0.153.4) but has no
|
|
54
54
|
// plugin surface for commands or role agents. Saying "installed" without saying
|
|
55
55
|
// this would promise a pipeline the host cannot run.
|
|
56
56
|
notSupported: [
|
|
57
|
-
"the rest of the Claude Code hooks — pipeline dispatch, cost guard, write log, format and type checks — only the safety guards are ported",
|
|
57
|
+
"the rest of the Claude Code hooks — pipeline dispatch, cost guard, write log, format and type checks — only the safety guards and the two edit hints are ported",
|
|
58
58
|
"slash commands — no plugin surface",
|
|
59
59
|
"native role agents — Codex plugins carry interface metadata; controlled roles run only through `npx --yes great-cto codex-host`",
|
|
60
60
|
],
|
package/package.json
CHANGED