strray-ai 1.15.19 β 1.15.22
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/.opencode/codex.codex +1 -1
- package/.opencode/enforcer-config.json +2 -2
- package/.opencode/plugins/strray-codex-injection.js +135 -4
- package/.opencode/strray/codex.json +1 -1
- package/.opencode/strray/config.json +1 -1
- package/.opencode/strray/features.json +1 -1
- package/.opencode/strray/integrations.json +3 -3
- package/.strray/agents_template.md +109 -0
- package/.strray/codex.json +531 -0
- package/.strray/config.json +29 -0
- package/.strray/features.json +132 -0
- package/.strray/integrations.json +23 -0
- package/.strray/routing-mappings.json +752 -0
- package/.strray/workflow_state.json +28 -0
- package/dist/analytics/consent-manager.d.ts +1 -1
- package/dist/analytics/consent-manager.d.ts.map +1 -1
- package/dist/analytics/consent-manager.js +3 -2
- package/dist/analytics/consent-manager.js.map +1 -1
- package/dist/analytics/routing-refiner.js +1 -1
- package/dist/cli/commands/analytics-status.d.ts.map +1 -1
- package/dist/cli/commands/analytics-status.js +4 -3
- package/dist/cli/commands/analytics-status.js.map +1 -1
- package/dist/cli/commands/antigravity-status.d.ts.map +1 -1
- package/dist/cli/commands/antigravity-status.js +2 -1
- package/dist/cli/commands/antigravity-status.js.map +1 -1
- package/dist/cli/commands/skill-install.d.ts.map +1 -1
- package/dist/cli/commands/skill-install.js +2 -1
- package/dist/cli/commands/skill-install.js.map +1 -1
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +11 -7
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/index.js +13 -7
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/server.js +2 -1
- package/dist/cli/server.js.map +1 -1
- package/dist/core/boot-orchestrator.js +1 -1
- package/dist/core/config-loader.d.ts.map +1 -1
- package/dist/core/config-loader.js +2 -1
- package/dist/core/config-loader.js.map +1 -1
- package/dist/core/context-loader.d.ts.map +1 -1
- package/dist/core/context-loader.js +2 -1
- package/dist/core/context-loader.js.map +1 -1
- package/dist/core/features-config.d.ts.map +1 -1
- package/dist/core/features-config.js +3 -2
- package/dist/core/features-config.js.map +1 -1
- package/dist/delegation/index.d.ts +3 -0
- package/dist/delegation/index.d.ts.map +1 -1
- package/dist/delegation/index.js +3 -0
- package/dist/delegation/index.js.map +1 -1
- package/dist/mcps/architect-tools.server.js +1 -1
- package/dist/mcps/auto-format.server.js +1 -1
- package/dist/mcps/boot-orchestrator.server.d.ts.map +1 -1
- package/dist/mcps/boot-orchestrator.server.js +4 -3
- package/dist/mcps/boot-orchestrator.server.js.map +1 -1
- package/dist/mcps/enforcer-tools.server.js +1 -1
- package/dist/mcps/estimation.server.js +1 -1
- package/dist/mcps/framework-compliance-audit.server.js +1 -1
- package/dist/mcps/framework-help.server.js +1 -1
- package/dist/mcps/knowledge-skills/api-design.server.js +1 -1
- package/dist/mcps/knowledge-skills/architecture-patterns.server.js +1 -1
- package/dist/mcps/knowledge-skills/bug-triage-specialist.server.js +1 -1
- package/dist/mcps/knowledge-skills/code-analyzer.server.js +1 -1
- package/dist/mcps/knowledge-skills/code-review.server.js +1 -1
- package/dist/mcps/knowledge-skills/content-creator.server.js +1 -1
- package/dist/mcps/knowledge-skills/database-design.server.js +1 -1
- package/dist/mcps/knowledge-skills/devops-deployment.server.js +1 -1
- package/dist/mcps/knowledge-skills/git-workflow.server.js +1 -1
- package/dist/mcps/knowledge-skills/growth-strategist.server.js +1 -1
- package/dist/mcps/knowledge-skills/log-monitor.server.js +1 -1
- package/dist/mcps/knowledge-skills/mobile-development.server.js +1 -1
- package/dist/mcps/knowledge-skills/multimodal-looker.server.js +1 -1
- package/dist/mcps/knowledge-skills/performance-optimization.server.js +1 -1
- package/dist/mcps/knowledge-skills/project-analysis.server.js +1 -1
- package/dist/mcps/knowledge-skills/refactoring-strategies.server.js +1 -1
- package/dist/mcps/knowledge-skills/security-audit.server.js +1 -1
- package/dist/mcps/knowledge-skills/seo-consultant.server.js +1 -1
- package/dist/mcps/knowledge-skills/session-management.server.js +1 -1
- package/dist/mcps/knowledge-skills/skill-invocation.server.js +1 -1
- package/dist/mcps/knowledge-skills/strategist.server.js +1 -1
- package/dist/mcps/knowledge-skills/tech-writer.server.js +2 -2
- package/dist/mcps/knowledge-skills/testing-best-practices.server.js +1 -1
- package/dist/mcps/knowledge-skills/testing-strategy.server.js +1 -1
- package/dist/mcps/knowledge-skills/ui-ux-design.server.js +1 -1
- package/dist/mcps/lint.server.js +1 -1
- package/dist/mcps/model-health-check.server.js +1 -1
- package/dist/mcps/performance-analysis.server.js +1 -1
- package/dist/mcps/processor-pipeline.server.js +1 -1
- package/dist/mcps/researcher.server.js +1 -1
- package/dist/mcps/security-scan.server.js +1 -1
- package/dist/mcps/state-manager.server.js +1 -1
- package/dist/monitoring/advanced-profiler.d.ts +1 -1
- package/dist/monitoring/advanced-profiler.d.ts.map +1 -1
- package/dist/monitoring/advanced-profiler.js +3 -2
- package/dist/monitoring/advanced-profiler.js.map +1 -1
- package/dist/orchestrator/universal-registry-bridge.js +1 -1
- package/dist/plugin/strray-codex-injection.d.ts.map +1 -1
- package/dist/plugin/strray-codex-injection.js +31 -4
- package/dist/plugin/strray-codex-injection.js.map +1 -1
- package/dist/processors/implementations/inference-improvement-processor.d.ts +1 -0
- package/dist/processors/implementations/inference-improvement-processor.d.ts.map +1 -1
- package/dist/processors/implementations/inference-improvement-processor.js +8 -2
- package/dist/processors/implementations/inference-improvement-processor.js.map +1 -1
- package/dist/public/about.html +228 -0
- package/dist/public/enterprise.html +27 -0
- package/dist/public/features.html +102 -0
- package/dist/public/index.html +145 -0
- package/dist/scripts/integration.js +29 -15
- package/dist/scripts/integration.js.map +1 -1
- package/dist/state/state-manager.d.ts +1 -1
- package/dist/state/state-manager.d.ts.map +1 -1
- package/dist/state/state-manager.js +5 -1
- package/dist/state/state-manager.js.map +1 -1
- package/dist/utils/token-manager.d.ts.map +1 -1
- package/dist/utils/token-manager.js +2 -1
- package/dist/utils/token-manager.js.map +1 -1
- package/package.json +4 -7
- package/scripts/node/prepare-consumer.cjs +36 -0
- package/scripts/node/universal-version-manager.js +3 -3
- package/.opencode/init.sh +0 -138
- package/.opencode/package.json +0 -19
package/.opencode/codex.codex
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.15.
|
|
2
|
+
"version": "1.15.21",
|
|
3
3
|
"terms": [
|
|
4
4
|
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60
|
|
5
5
|
],
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"framework": "StringRay 1.0.0",
|
|
3
|
-
"version": "1.15.
|
|
3
|
+
"version": "1.15.21",
|
|
4
4
|
"description": "Codex-compliant framework configuration for Credible UI project",
|
|
5
5
|
"thresholds": {
|
|
6
6
|
"bundleSize": {
|
|
@@ -220,7 +220,7 @@
|
|
|
220
220
|
}
|
|
221
221
|
},
|
|
222
222
|
"codex": {
|
|
223
|
-
"version": "1.15.
|
|
223
|
+
"version": "1.15.21",
|
|
224
224
|
"terms": [
|
|
225
225
|
1,
|
|
226
226
|
2,
|
|
@@ -11,10 +11,35 @@
|
|
|
11
11
|
import * as fs from "fs";
|
|
12
12
|
import * as path from "path";
|
|
13
13
|
import { spawn } from "child_process";
|
|
14
|
-
|
|
15
|
-
//
|
|
14
|
+
// Dynamic imports for config-paths and framework-logger
|
|
15
|
+
// Uses candidate-based resolution to work from both dist/plugin/ and .opencode/plugins/
|
|
16
16
|
let _resolveCodexPath;
|
|
17
17
|
let _resolveStateDir;
|
|
18
|
+
let _frameworkLogger;
|
|
19
|
+
async function loadFrameworkLogger() {
|
|
20
|
+
if (_frameworkLogger)
|
|
21
|
+
return _frameworkLogger;
|
|
22
|
+
const candidates = [
|
|
23
|
+
"../core/framework-logger.js",
|
|
24
|
+
"../../dist/core/framework-logger.js",
|
|
25
|
+
"../../../node_modules/strray-ai/dist/core/framework-logger.js",
|
|
26
|
+
];
|
|
27
|
+
for (const p of candidates) {
|
|
28
|
+
try {
|
|
29
|
+
const mod = await import(p);
|
|
30
|
+
_frameworkLogger = mod.frameworkLogger;
|
|
31
|
+
return _frameworkLogger;
|
|
32
|
+
}
|
|
33
|
+
catch (_) {
|
|
34
|
+
// try next candidate
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
// Fallback: no-op logger so plugin doesn't crash
|
|
38
|
+
_frameworkLogger = {
|
|
39
|
+
log: (_module, _event, _status, _data) => { },
|
|
40
|
+
};
|
|
41
|
+
return _frameworkLogger;
|
|
42
|
+
}
|
|
18
43
|
async function loadConfigPaths() {
|
|
19
44
|
if (_resolveCodexPath && _resolveStateDir)
|
|
20
45
|
return;
|
|
@@ -34,7 +59,8 @@ async function loadConfigPaths() {
|
|
|
34
59
|
// try next candidate
|
|
35
60
|
}
|
|
36
61
|
}
|
|
37
|
-
|
|
62
|
+
const logger = await loadFrameworkLogger();
|
|
63
|
+
logger.log("strray-codex-plugin", "config-paths-load-failed", "warning", { warning: "Failed to load config-paths module from any location" });
|
|
38
64
|
}
|
|
39
65
|
/** Convenience wrapper β must be awaited before use */
|
|
40
66
|
async function resolveCodexPath(...args) {
|
|
@@ -63,7 +89,8 @@ async function importSystemPromptGenerator() {
|
|
|
63
89
|
// try next candidate
|
|
64
90
|
}
|
|
65
91
|
}
|
|
66
|
-
|
|
92
|
+
const logger = await loadFrameworkLogger();
|
|
93
|
+
logger.log("strray-codex-plugin", "system-prompt-generator-load-failed", "warning", { warning: "Failed to load lean system prompt generator, using fallback" });
|
|
67
94
|
}
|
|
68
95
|
}
|
|
69
96
|
let ProcessorManager;
|
|
@@ -379,6 +406,59 @@ function formatCodexContext(contexts) {
|
|
|
379
406
|
* This plugin hooks into experimental.chat.system.transform event
|
|
380
407
|
* to inject codex terms into system prompt before it's sent to LLM.
|
|
381
408
|
*/
|
|
409
|
+
/** Inference tuning: run every N tool calls */
|
|
410
|
+
const INFERENCE_TUNE_INTERVAL = 100;
|
|
411
|
+
let _openCodeToolCallCount = 0;
|
|
412
|
+
let _lastTuneToolCallCount = 0;
|
|
413
|
+
/**
|
|
414
|
+
* Map tool names to agent/skill identifiers for outcome tracking.
|
|
415
|
+
* This lets the analytics pipeline correlate tool usage patterns
|
|
416
|
+
* with agent routing effectiveness.
|
|
417
|
+
*/
|
|
418
|
+
const TOOL_AGENT_MAP = {
|
|
419
|
+
write: { agent: "code-reviewer", skill: "write" },
|
|
420
|
+
edit: { agent: "code-reviewer", skill: "edit" },
|
|
421
|
+
multiedit: { agent: "code-reviewer", skill: "multiedit" },
|
|
422
|
+
bash: { agent: "testing-lead", skill: "execution" },
|
|
423
|
+
search: { agent: "researcher", skill: "search" },
|
|
424
|
+
read: { agent: "researcher", skill: "read" },
|
|
425
|
+
glob: { agent: "researcher", skill: "glob" },
|
|
426
|
+
grep: { agent: "researcher", skill: "search" },
|
|
427
|
+
ls: { agent: "researcher", skill: "list" },
|
|
428
|
+
};
|
|
429
|
+
/**
|
|
430
|
+
* Classify a tool call into a meaningful task type for analytics.
|
|
431
|
+
* Mirrors _classify_task_type in the Hermes plugin so both plugins
|
|
432
|
+
* produce comparable outcome data for the inference tuner.
|
|
433
|
+
*/
|
|
434
|
+
function classifyTaskType(tool, args) {
|
|
435
|
+
const cmd = String(args?.command ?? "").toLowerCase().trim();
|
|
436
|
+
if (tool === "bash" && cmd) {
|
|
437
|
+
if (/(npm|yarn|pnpm)\s+test|jest|vitest|mocha|pytest/.test(cmd))
|
|
438
|
+
return "testing";
|
|
439
|
+
if (/(npm|yarn|pnpm)\s+run|npx|cargo|go run|make\s/.test(cmd))
|
|
440
|
+
return "build";
|
|
441
|
+
if (/audit|security|snyk|owasp|bandit/.test(cmd))
|
|
442
|
+
return "security";
|
|
443
|
+
if (/eslint|prettier|black|ruff|lint|format/.test(cmd))
|
|
444
|
+
return "lint";
|
|
445
|
+
if (/git\s/.test(cmd))
|
|
446
|
+
return "git";
|
|
447
|
+
if (/(npm|yarn|pnpm)\s+install|pip install|cargo add/.test(cmd))
|
|
448
|
+
return "install";
|
|
449
|
+
if (/grep|rg |find |ls |cat |head |tail /.test(cmd))
|
|
450
|
+
return "search";
|
|
451
|
+
}
|
|
452
|
+
if (tool === "write")
|
|
453
|
+
return "write";
|
|
454
|
+
if (tool === "edit" || tool === "multiedit")
|
|
455
|
+
return "edit";
|
|
456
|
+
if (tool === "read")
|
|
457
|
+
return "read";
|
|
458
|
+
if (tool === "search" || tool === "grep" || tool === "glob")
|
|
459
|
+
return "search";
|
|
460
|
+
return "unknown";
|
|
461
|
+
}
|
|
382
462
|
export default async function strrayCodexPlugin(input) {
|
|
383
463
|
const { directory: inputDirectory } = input;
|
|
384
464
|
const directory = inputDirectory || process.cwd();
|
|
@@ -575,6 +655,37 @@ export default async function strrayCodexPlugin(input) {
|
|
|
575
655
|
const logger = await getOrCreateLogger(directory);
|
|
576
656
|
await loadStrRayComponents();
|
|
577
657
|
const { tool, args, result } = input;
|
|
658
|
+
// Record routing outcome for analytics pipeline.
|
|
659
|
+
// This feeds the inference tuner with real tool usage data so it
|
|
660
|
+
// can refine keyword mappings and improve predictive analytics.
|
|
661
|
+
try {
|
|
662
|
+
const { routingOutcomeTracker } = await import("../delegation/analytics/outcome-tracker.js");
|
|
663
|
+
const mapping = TOOL_AGENT_MAP[tool];
|
|
664
|
+
const taskType = classifyTaskType(tool, args);
|
|
665
|
+
const rawDesc = args?.content
|
|
666
|
+
? String(args.content).slice(0, 150)
|
|
667
|
+
: args?.filePath
|
|
668
|
+
? String(args.filePath)
|
|
669
|
+
: args?.command
|
|
670
|
+
? String(args.command).slice(0, 150)
|
|
671
|
+
: tool;
|
|
672
|
+
const description = `[${taskType}] ${rawDesc}`;
|
|
673
|
+
const outcomeFields = {
|
|
674
|
+
taskId: `opencode-${_openCodeToolCallCount}`,
|
|
675
|
+
taskDescription: description,
|
|
676
|
+
routedAgent: mapping?.agent ?? "direct",
|
|
677
|
+
routedSkill: mapping?.skill ?? tool,
|
|
678
|
+
confidence: mapping ? 0.8 : 0.5,
|
|
679
|
+
success: result?.error == null,
|
|
680
|
+
routingMethod: mapping ? "keyword" : "default",
|
|
681
|
+
};
|
|
682
|
+
if (taskType !== "unknown")
|
|
683
|
+
outcomeFields.taskType = taskType;
|
|
684
|
+
routingOutcomeTracker.recordOutcome(outcomeFields);
|
|
685
|
+
}
|
|
686
|
+
catch {
|
|
687
|
+
// Outcome tracker not available β skip silently
|
|
688
|
+
}
|
|
578
689
|
// Debug: log full input
|
|
579
690
|
logger.log(`π₯ After hook input: ${JSON.stringify({ tool, hasArgs: !!args, args, hasResult: !!result }).slice(0, 200)}`);
|
|
580
691
|
// Run post-processors for write/edit operations AFTER tool completes
|
|
@@ -640,6 +751,26 @@ export default async function strrayCodexPlugin(input) {
|
|
|
640
751
|
logger.error(`π₯ Post-processor error`, error);
|
|
641
752
|
}
|
|
642
753
|
}
|
|
754
|
+
// Auto inference tuning: every INFERENCE_TUNE_INTERVAL tool calls,
|
|
755
|
+
// run a single tuning cycle to close the feedback loop.
|
|
756
|
+
_openCodeToolCallCount++;
|
|
757
|
+
if (_openCodeToolCallCount - _lastTuneToolCallCount >= INFERENCE_TUNE_INTERVAL) {
|
|
758
|
+
_lastTuneToolCallCount = _openCodeToolCallCount;
|
|
759
|
+
try {
|
|
760
|
+
const { inferenceTuner } = await import("../services/inference-tuner.js");
|
|
761
|
+
inferenceTuner
|
|
762
|
+
.runTuningCycle()
|
|
763
|
+
.then(() => {
|
|
764
|
+
logger.log(`π Inference tuning cycle completed (call #${_openCodeToolCallCount})`);
|
|
765
|
+
})
|
|
766
|
+
.catch((err) => {
|
|
767
|
+
logger.log(`β οΈ Inference tuning cycle skipped: ${err instanceof Error ? err.message : String(err)}`);
|
|
768
|
+
});
|
|
769
|
+
}
|
|
770
|
+
catch {
|
|
771
|
+
// Tuner not available in this environment β skip silently
|
|
772
|
+
}
|
|
773
|
+
}
|
|
643
774
|
},
|
|
644
775
|
config: async (_config) => {
|
|
645
776
|
const logger = await getOrCreateLogger(directory);
|
|
@@ -4,19 +4,19 @@
|
|
|
4
4
|
"openclaw": {
|
|
5
5
|
"enabled": false,
|
|
6
6
|
"type": "external-service",
|
|
7
|
-
"version": "1.15.
|
|
7
|
+
"version": "1.15.21",
|
|
8
8
|
"config": {}
|
|
9
9
|
},
|
|
10
10
|
"python-bridge": {
|
|
11
11
|
"enabled": false,
|
|
12
12
|
"type": "protocol-bridge",
|
|
13
|
-
"version": "1.15.
|
|
13
|
+
"version": "1.15.21",
|
|
14
14
|
"config": {}
|
|
15
15
|
},
|
|
16
16
|
"react": {
|
|
17
17
|
"enabled": false,
|
|
18
18
|
"type": "framework-adapter",
|
|
19
|
-
"version": "1.15.
|
|
19
|
+
"version": "1.15.21",
|
|
20
20
|
"config": {}
|
|
21
21
|
}
|
|
22
22
|
}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# StringRay AI v1.15.1 β Agent Context & Universal Development Codex
|
|
2
|
+
|
|
3
|
+
**Framework Version**: 1.14.1
|
|
4
|
+
**Codex Version**: 1.7.5 (condensed)
|
|
5
|
+
**Last Updated**: 2026-03-23
|
|
6
|
+
**Purpose**: Systematic error prevention and production-ready AI-assisted development
|
|
7
|
+
|
|
8
|
+
## π― CRITICAL RULES β ZERO TOLERANCE (MANDATORY)
|
|
9
|
+
|
|
10
|
+
1. **Full File Reading Before Edit**
|
|
11
|
+
ALWAYS read the ENTIRE file using the `read` tool before ANY edit, refactor, or write.
|
|
12
|
+
Understand complete structure, imports, dependencies, and context.
|
|
13
|
+
Partial/contextual edits are strictly forbidden.
|
|
14
|
+
|
|
15
|
+
2. **Verify Changes Actually Applied**
|
|
16
|
+
After every edit/write: use `read` to confirm the exact changes are present.
|
|
17
|
+
Check for regressions and unintended modifications.
|
|
18
|
+
NEVER declare success without observable verification.
|
|
19
|
+
|
|
20
|
+
3. **Command & Tool Output Review**
|
|
21
|
+
Immediately review ALL command/tool outputs.
|
|
22
|
+
Identify errors, warnings, or anomalies.
|
|
23
|
+
Add TODO for course correction if issues found.
|
|
24
|
+
Do not proceed until critical problems are resolved.
|
|
25
|
+
|
|
26
|
+
4. **No False Success Claims**
|
|
27
|
+
Only report "completed", "edited", or "fixed" after verification steps confirm success.
|
|
28
|
+
Prohibited: assuming success, subjective "looks correct", skipping checks for "trivial" changes.
|
|
29
|
+
|
|
30
|
+
5. **Surgical & Progressive Fixes**
|
|
31
|
+
Fix root causes minimally β no patches, stubs, or over-engineering.
|
|
32
|
+
All code must be production-ready from first commit.
|
|
33
|
+
|
|
34
|
+
6. **Error & Loop Prevention**
|
|
35
|
+
Resolve all errors before continuing (90%+ runtime prevention target).
|
|
36
|
+
Every loop/async must have clear termination/timeout.
|
|
37
|
+
|
|
38
|
+
7. **Type Safety & Immutability First**
|
|
39
|
+
No `any`, `@ts-ignore`. Prefer immutable patterns and early returns/guards.
|
|
40
|
+
|
|
41
|
+
8. **DRY, YAGNI, Separation of Concerns**
|
|
42
|
+
No duplication. No unnecessary features. One responsibility per module/function.
|
|
43
|
+
|
|
44
|
+
9. **Test & Performance Awareness**
|
|
45
|
+
>85% behavioral coverage target. Respect bundle <2MB, FCP <2s budgets.
|
|
46
|
+
|
|
47
|
+
10. **Security & Input Validation**
|
|
48
|
+
Validate/sanitize all inputs. Security by design.
|
|
49
|
+
|
|
50
|
+
## Core Codex Terms (Top 20 β Enforced)
|
|
51
|
+
|
|
52
|
+
1. Progressive production-ready code
|
|
53
|
+
2. No patches/stubs/bridge code
|
|
54
|
+
3. Avoid over-engineering
|
|
55
|
+
4. Fit-for-purpose prod-level code
|
|
56
|
+
5. Surgical root-cause fixes
|
|
57
|
+
6. Batched introspection cycles
|
|
58
|
+
7. Resolve all errors (90% prevention)
|
|
59
|
+
8. Prevent infinite loops/timeouts
|
|
60
|
+
9. Shared global state / single source of truth
|
|
61
|
+
10. Type safety first (no `any`)
|
|
62
|
+
11. Early returns & guard clauses
|
|
63
|
+
12. Error boundaries & graceful degradation
|
|
64
|
+
13. Immutability preferred
|
|
65
|
+
14. Separation of concerns
|
|
66
|
+
15. DRY β eliminate duplication
|
|
67
|
+
16. YAGNI β no speculative features
|
|
68
|
+
17. Meaningful, self-documenting names
|
|
69
|
+
18. Small, focused functions (<30 lines ideal)
|
|
70
|
+
19. Consistent style (linter enforced)
|
|
71
|
+
20. Test coverage >85% (behavioral focus)
|
|
72
|
+
|
|
73
|
+
## Agent Capabilities Matrix
|
|
74
|
+
|
|
75
|
+
| Agent | Role | Complexity | Key Tools | Strategy |
|
|
76
|
+
|---------------------------|-----------------------------------|------------|----------------------------------------|-------------------|
|
|
77
|
+
| enforcer | Codex & error prevention | All | read, grep, lsp_*, bash | Block violations |
|
|
78
|
+
| orchestrator | Workflow coordination | Enterprise | read, grep, call_omo_agent, session_* | Consensus |
|
|
79
|
+
| architect | Design & decisions | High | read, grep, lsp_*, background_task | Expert priority |
|
|
80
|
+
| bug-triage-specialist | Error investigation & fixes | Debug | read, grep, ast_grep_* | Majority vote |
|
|
81
|
+
| code-reviewer | Quality & standards | Changes | read, grep, lsp_diagnostics | Expert priority |
|
|
82
|
+
| security-auditor | Vulnerabilities & compliance | Security | read, grep, grep_app_searchGitHub | Block critical |
|
|
83
|
+
| refactorer | Debt & consolidation | Refactor | read, grep, lsp_rename, ast_grep_* | Majority vote |
|
|
84
|
+
| testing-lead | Testing strategy & coverage | Tests | read, grep, lsp_* | Expert priority |
|
|
85
|
+
| storyteller | Narrative deep reflections | Narrative | read, grep, write | Expert priority |
|
|
86
|
+
| researcher | Codebase exploration | Research | read, grep, codesearch, websearch | Expert priority |
|
|
87
|
+
|
|
88
|
+
## Complexity Routing Summary
|
|
89
|
+
|
|
90
|
+
Score = (filesΓ2 + change/10 + depsΓ3 + duration/10) Γ operation_weight Γ risk_mult
|
|
91
|
+
- Operation weights: debug 2.0, refactor 1.8, analyze 1.5, modify 1.2, others 1.0
|
|
92
|
+
- Risk multipliers: critical 1.6, high 1.3, medium 1.0, low 0.8
|
|
93
|
+
Thresholds:
|
|
94
|
+
- β€15 β single agent
|
|
95
|
+
- 16β50 β multi-agent possible
|
|
96
|
+
- 51+ β orchestrator-led
|
|
97
|
+
|
|
98
|
+
## Operational Guidelines
|
|
99
|
+
|
|
100
|
+
- Evaluate complexity before execution
|
|
101
|
+
- Always verify: read full file β apply change β read again β confirm no regressions
|
|
102
|
+
- Use `call_omo_agent` or `task()` for delegation
|
|
103
|
+
- Log JobId for traceability
|
|
104
|
+
- Enforce codex compliance on every operation
|
|
105
|
+
|
|
106
|
+
**Codex Enforcement**: All actions validated against these rules. Violations block progress until resolved.
|
|
107
|
+
**Target**: 99.6% systematic error prevention through verification-first behavior.
|
|
108
|
+
|
|
109
|
+
(End of file - total 105 lines)
|