strray-ai 1.15.18 β 1.15.20
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 +127 -1
- 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/predictive-analytics.d.ts +21 -4
- package/dist/analytics/predictive-analytics.d.ts.map +1 -1
- package/dist/analytics/predictive-analytics.js +147 -3
- package/dist/analytics/predictive-analytics.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 +18 -4
- 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/core/kernel-patterns.d.ts.map +1 -1
- package/dist/core/kernel-patterns.js +56 -9
- package/dist/core/kernel-patterns.js.map +1 -1
- package/dist/delegation/agent-delegator.d.ts +12 -0
- package/dist/delegation/agent-delegator.d.ts.map +1 -1
- package/dist/delegation/agent-delegator.js +113 -0
- package/dist/delegation/agent-delegator.js.map +1 -1
- package/dist/delegation/analytics/outcome-tracker.d.ts.map +1 -1
- package/dist/delegation/analytics/outcome-tracker.js +4 -2
- package/dist/delegation/analytics/outcome-tracker.js.map +1 -1
- package/dist/delegation/config/types.d.ts +1 -0
- package/dist/delegation/config/types.d.ts.map +1 -1
- package/dist/enforcement/core/rule-registry.d.ts.map +1 -1
- package/dist/enforcement/core/rule-registry.js +5 -1
- package/dist/enforcement/core/rule-registry.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 +0 -6
- package/dist/plugin/strray-codex-injection.d.ts.map +1 -1
- package/dist/plugin/strray-codex-injection.js +127 -1
- 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/services/inference-tuner.d.ts +20 -0
- package/dist/services/inference-tuner.d.ts.map +1 -1
- package/dist/services/inference-tuner.js +130 -3
- package/dist/services/inference-tuner.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 +6 -12
- 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.19",
|
|
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.19",
|
|
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.19",
|
|
224
224
|
"terms": [
|
|
225
225
|
1,
|
|
226
226
|
2,
|
|
@@ -11,7 +11,27 @@
|
|
|
11
11
|
import * as fs from "fs";
|
|
12
12
|
import * as path from "path";
|
|
13
13
|
import { spawn } from "child_process";
|
|
14
|
-
|
|
14
|
+
// frameworkLogger β dynamically loaded (works from both dist/plugin/ and .opencode/plugins/)
|
|
15
|
+
let frameworkLogger;
|
|
16
|
+
async function loadFrameworkLogger() {
|
|
17
|
+
if (frameworkLogger)
|
|
18
|
+
return;
|
|
19
|
+
const candidates = [
|
|
20
|
+
"../../dist/core/framework-logger.js",
|
|
21
|
+
"../core/framework-logger.js",
|
|
22
|
+
];
|
|
23
|
+
for (const p of candidates) {
|
|
24
|
+
try {
|
|
25
|
+
frameworkLogger = (await import(p)).frameworkLogger;
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
catch (_) {
|
|
29
|
+
// try next candidate
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
// Fallback noop logger β plugin works without structured logging
|
|
33
|
+
frameworkLogger = { log: () => { } };
|
|
34
|
+
}
|
|
15
35
|
// Dynamic imports for config-paths (works from both dist/plugin/ and .opencode/plugins/)
|
|
16
36
|
let _resolveCodexPath;
|
|
17
37
|
let _resolveStateDir;
|
|
@@ -34,6 +54,7 @@ async function loadConfigPaths() {
|
|
|
34
54
|
// try next candidate
|
|
35
55
|
}
|
|
36
56
|
}
|
|
57
|
+
await loadFrameworkLogger();
|
|
37
58
|
frameworkLogger.log("strray-codex-plugin", "config-paths-load-failed", "warning", { warning: "Failed to load config-paths module from any location" });
|
|
38
59
|
}
|
|
39
60
|
/** Convenience wrapper β must be awaited before use */
|
|
@@ -63,6 +84,7 @@ async function importSystemPromptGenerator() {
|
|
|
63
84
|
// try next candidate
|
|
64
85
|
}
|
|
65
86
|
}
|
|
87
|
+
await loadFrameworkLogger();
|
|
66
88
|
frameworkLogger.log("strray-codex-plugin", "system-prompt-generator-load-failed", "warning", { warning: "Failed to load lean system prompt generator, using fallback" });
|
|
67
89
|
}
|
|
68
90
|
}
|
|
@@ -379,6 +401,59 @@ function formatCodexContext(contexts) {
|
|
|
379
401
|
* This plugin hooks into experimental.chat.system.transform event
|
|
380
402
|
* to inject codex terms into system prompt before it's sent to LLM.
|
|
381
403
|
*/
|
|
404
|
+
/** Inference tuning: run every N tool calls */
|
|
405
|
+
const INFERENCE_TUNE_INTERVAL = 100;
|
|
406
|
+
let _openCodeToolCallCount = 0;
|
|
407
|
+
let _lastTuneToolCallCount = 0;
|
|
408
|
+
/**
|
|
409
|
+
* Map tool names to agent/skill identifiers for outcome tracking.
|
|
410
|
+
* This lets the analytics pipeline correlate tool usage patterns
|
|
411
|
+
* with agent routing effectiveness.
|
|
412
|
+
*/
|
|
413
|
+
const TOOL_AGENT_MAP = {
|
|
414
|
+
write: { agent: "code-reviewer", skill: "write" },
|
|
415
|
+
edit: { agent: "code-reviewer", skill: "edit" },
|
|
416
|
+
multiedit: { agent: "code-reviewer", skill: "multiedit" },
|
|
417
|
+
bash: { agent: "testing-lead", skill: "execution" },
|
|
418
|
+
search: { agent: "researcher", skill: "search" },
|
|
419
|
+
read: { agent: "researcher", skill: "read" },
|
|
420
|
+
glob: { agent: "researcher", skill: "glob" },
|
|
421
|
+
grep: { agent: "researcher", skill: "search" },
|
|
422
|
+
ls: { agent: "researcher", skill: "list" },
|
|
423
|
+
};
|
|
424
|
+
/**
|
|
425
|
+
* Classify a tool call into a meaningful task type for analytics.
|
|
426
|
+
* Mirrors _classify_task_type in the Hermes plugin so both plugins
|
|
427
|
+
* produce comparable outcome data for the inference tuner.
|
|
428
|
+
*/
|
|
429
|
+
function classifyTaskType(tool, args) {
|
|
430
|
+
const cmd = String(args?.command ?? "").toLowerCase().trim();
|
|
431
|
+
if (tool === "bash" && cmd) {
|
|
432
|
+
if (/(npm|yarn|pnpm)\s+test|jest|vitest|mocha|pytest/.test(cmd))
|
|
433
|
+
return "testing";
|
|
434
|
+
if (/(npm|yarn|pnpm)\s+run|npx|cargo|go run|make\s/.test(cmd))
|
|
435
|
+
return "build";
|
|
436
|
+
if (/audit|security|snyk|owasp|bandit/.test(cmd))
|
|
437
|
+
return "security";
|
|
438
|
+
if (/eslint|prettier|black|ruff|lint|format/.test(cmd))
|
|
439
|
+
return "lint";
|
|
440
|
+
if (/git\s/.test(cmd))
|
|
441
|
+
return "git";
|
|
442
|
+
if (/(npm|yarn|pnpm)\s+install|pip install|cargo add/.test(cmd))
|
|
443
|
+
return "install";
|
|
444
|
+
if (/grep|rg |find |ls |cat |head |tail /.test(cmd))
|
|
445
|
+
return "search";
|
|
446
|
+
}
|
|
447
|
+
if (tool === "write")
|
|
448
|
+
return "write";
|
|
449
|
+
if (tool === "edit" || tool === "multiedit")
|
|
450
|
+
return "edit";
|
|
451
|
+
if (tool === "read")
|
|
452
|
+
return "read";
|
|
453
|
+
if (tool === "search" || tool === "grep" || tool === "glob")
|
|
454
|
+
return "search";
|
|
455
|
+
return "unknown";
|
|
456
|
+
}
|
|
382
457
|
export default async function strrayCodexPlugin(input) {
|
|
383
458
|
const { directory: inputDirectory } = input;
|
|
384
459
|
const directory = inputDirectory || process.cwd();
|
|
@@ -575,6 +650,37 @@ export default async function strrayCodexPlugin(input) {
|
|
|
575
650
|
const logger = await getOrCreateLogger(directory);
|
|
576
651
|
await loadStrRayComponents();
|
|
577
652
|
const { tool, args, result } = input;
|
|
653
|
+
// Record routing outcome for analytics pipeline.
|
|
654
|
+
// This feeds the inference tuner with real tool usage data so it
|
|
655
|
+
// can refine keyword mappings and improve predictive analytics.
|
|
656
|
+
try {
|
|
657
|
+
const { routingOutcomeTracker } = await import("../delegation/analytics/outcome-tracker.js");
|
|
658
|
+
const mapping = TOOL_AGENT_MAP[tool];
|
|
659
|
+
const taskType = classifyTaskType(tool, args);
|
|
660
|
+
const rawDesc = args?.content
|
|
661
|
+
? String(args.content).slice(0, 150)
|
|
662
|
+
: args?.filePath
|
|
663
|
+
? String(args.filePath)
|
|
664
|
+
: args?.command
|
|
665
|
+
? String(args.command).slice(0, 150)
|
|
666
|
+
: tool;
|
|
667
|
+
const description = `[${taskType}] ${rawDesc}`;
|
|
668
|
+
const outcomeFields = {
|
|
669
|
+
taskId: `opencode-${_openCodeToolCallCount}`,
|
|
670
|
+
taskDescription: description,
|
|
671
|
+
routedAgent: mapping?.agent ?? "direct",
|
|
672
|
+
routedSkill: mapping?.skill ?? tool,
|
|
673
|
+
confidence: mapping ? 0.8 : 0.5,
|
|
674
|
+
success: result?.error == null,
|
|
675
|
+
routingMethod: mapping ? "keyword" : "default",
|
|
676
|
+
};
|
|
677
|
+
if (taskType !== "unknown")
|
|
678
|
+
outcomeFields.taskType = taskType;
|
|
679
|
+
routingOutcomeTracker.recordOutcome(outcomeFields);
|
|
680
|
+
}
|
|
681
|
+
catch {
|
|
682
|
+
// Outcome tracker not available β skip silently
|
|
683
|
+
}
|
|
578
684
|
// Debug: log full input
|
|
579
685
|
logger.log(`π₯ After hook input: ${JSON.stringify({ tool, hasArgs: !!args, args, hasResult: !!result }).slice(0, 200)}`);
|
|
580
686
|
// Run post-processors for write/edit operations AFTER tool completes
|
|
@@ -640,6 +746,26 @@ export default async function strrayCodexPlugin(input) {
|
|
|
640
746
|
logger.error(`π₯ Post-processor error`, error);
|
|
641
747
|
}
|
|
642
748
|
}
|
|
749
|
+
// Auto inference tuning: every INFERENCE_TUNE_INTERVAL tool calls,
|
|
750
|
+
// run a single tuning cycle to close the feedback loop.
|
|
751
|
+
_openCodeToolCallCount++;
|
|
752
|
+
if (_openCodeToolCallCount - _lastTuneToolCallCount >= INFERENCE_TUNE_INTERVAL) {
|
|
753
|
+
_lastTuneToolCallCount = _openCodeToolCallCount;
|
|
754
|
+
try {
|
|
755
|
+
const { inferenceTuner } = await import("../services/inference-tuner.js");
|
|
756
|
+
inferenceTuner
|
|
757
|
+
.runTuningCycle()
|
|
758
|
+
.then(() => {
|
|
759
|
+
logger.log(`π Inference tuning cycle completed (call #${_openCodeToolCallCount})`);
|
|
760
|
+
})
|
|
761
|
+
.catch((err) => {
|
|
762
|
+
logger.log(`β οΈ Inference tuning cycle skipped: ${err instanceof Error ? err.message : String(err)}`);
|
|
763
|
+
});
|
|
764
|
+
}
|
|
765
|
+
catch {
|
|
766
|
+
// Tuner not available in this environment β skip silently
|
|
767
|
+
}
|
|
768
|
+
}
|
|
643
769
|
},
|
|
644
770
|
config: async (_config) => {
|
|
645
771
|
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.19",
|
|
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.19",
|
|
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.19",
|
|
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)
|