sneakoscope 4.2.0 → 4.3.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.
- package/README.md +35 -8
- package/crates/sks-core/Cargo.lock +1 -1
- package/crates/sks-core/Cargo.toml +1 -1
- package/crates/sks-core/src/main.rs +1 -1
- package/dist/bin/sks.js +1 -1
- package/dist/cli/command-registry.js +3 -1
- package/dist/cli/ultra-search-command.js +163 -0
- package/dist/cli/xai-command.js +28 -168
- package/dist/core/agents/agent-codex-cockpit.js +3 -3
- package/dist/core/agents/agent-runner-ollama.js +2 -0
- package/dist/core/agents/agent-wrongness.js +1 -1
- package/dist/core/agents/native-worker-backend-router.js +3 -0
- package/dist/core/bench.js +115 -0
- package/dist/core/code-structure.js +399 -11
- package/dist/core/codex-control/codex-app-server-v2-client.js +86 -2
- package/dist/core/codex-control/codex-fake-sdk-adapter.js +67 -9
- package/dist/core/codex-control/codex-reliability-shield.js +26 -5
- package/dist/core/codex-control/codex-task-runner.js +7 -1
- package/dist/core/codex-control/gpt-final-arbiter.js +4 -1
- package/dist/core/codex-control/gpt-final-review-schema.js +58 -0
- package/dist/core/codex-control/model-call-concurrency.js +1 -1
- package/dist/core/codex-native/core-skill-manifest.js +23 -0
- package/dist/core/commands/bench-command.js +11 -2
- package/dist/core/commands/code-structure-command.js +34 -2
- package/dist/core/commands/qa-loop-command.js +23 -7
- package/dist/core/commands/run-command.js +92 -2
- package/dist/core/commands/seo-command.js +130 -0
- package/dist/core/feature-fixtures.js +6 -0
- package/dist/core/feature-registry.js +3 -1
- package/dist/core/fsx.js +1 -1
- package/dist/core/hooks-runtime.js +9 -1
- package/dist/core/init.js +8 -6
- package/dist/core/lean-engineering-policy.js +159 -0
- package/dist/core/pipeline-internals/runtime-core.js +15 -5
- package/dist/core/proof/auto-finalize.js +3 -2
- package/dist/core/proof/proof-schema.js +2 -1
- package/dist/core/proof/proof-writer.js +1 -0
- package/dist/core/proof/route-adapter.js +4 -2
- package/dist/core/proof/route-finalizer.js +35 -3
- package/dist/core/qa-loop/qa-app-server-driver.js +134 -0
- package/dist/core/qa-loop/qa-contract-v2.js +231 -0
- package/dist/core/qa-loop/qa-gate-v2.js +132 -0
- package/dist/core/qa-loop/qa-runtime-artifacts.js +53 -0
- package/dist/core/qa-loop/qa-surface-router.js +114 -0
- package/dist/core/qa-loop/qa-types.js +18 -0
- package/dist/core/qa-loop.js +83 -26
- package/dist/core/release/gate-manifest.js +1 -0
- package/dist/core/release/sla-scheduler.js +1 -1
- package/dist/core/release-parallel-full-coverage.js +1 -1
- package/dist/core/routes.js +96 -14
- package/dist/core/search-visibility/adapter-registry.js +26 -0
- package/dist/core/search-visibility/adapters/next-app.js +6 -0
- package/dist/core/search-visibility/adapters/next-pages.js +6 -0
- package/dist/core/search-visibility/adapters/static-site.js +6 -0
- package/dist/core/search-visibility/analyzers.js +377 -0
- package/dist/core/search-visibility/artifacts.js +183 -0
- package/dist/core/search-visibility/discovery.js +347 -0
- package/dist/core/search-visibility/index.js +199 -0
- package/dist/core/search-visibility/mission.js +67 -0
- package/dist/core/search-visibility/mutation.js +314 -0
- package/dist/core/search-visibility/types.js +2 -0
- package/dist/core/search-visibility/verifier.js +60 -0
- package/dist/core/source-intelligence/source-intelligence-policy.js +45 -26
- package/dist/core/source-intelligence/source-intelligence-proof.js +10 -16
- package/dist/core/source-intelligence/source-intelligence-runner.js +56 -42
- package/dist/core/triwiki/triwiki-affected-graph.js +3 -2
- package/dist/core/trust-kernel/trust-report.js +3 -5
- package/dist/core/ultra-search/index.js +3 -0
- package/dist/core/ultra-search/runtime.js +502 -0
- package/dist/core/ultra-search/types.js +3 -0
- package/dist/core/version.js +1 -1
- package/dist/scripts/agent-visual-consistency-check.js +1 -1
- package/dist/scripts/check-architecture.js +40 -7
- package/dist/scripts/check-command-module-budget.js +43 -5
- package/dist/scripts/check-pipeline-budget.js +17 -30
- package/dist/scripts/check-publish-tag.js +33 -6
- package/dist/scripts/check-route-modularity.js +25 -33
- package/dist/scripts/check-runtime-schemas.js +22 -0
- package/dist/scripts/codex-control-all-pipelines-check.js +1 -0
- package/dist/scripts/codex-control-model-capacity-fallback-check.js +53 -0
- package/dist/scripts/config-managed-merge-callsite-coverage-check.js +7 -1
- package/dist/scripts/core-skill-immutable-sync-check.js +3 -2
- package/dist/scripts/core-skill-integrity-blackbox.js +3 -2
- package/dist/scripts/core-skill-manifest-check.js +7 -2
- package/dist/scripts/geo-claim-evidence-check.js +18 -0
- package/dist/scripts/geo-cli-blackbox-check.js +18 -0
- package/dist/scripts/geo-crawler-policy-check.js +16 -0
- package/dist/scripts/geo-llms-txt-optional-check.js +19 -0
- package/dist/scripts/gpt-final-arbiter-check.js +4 -1
- package/dist/scripts/loop-directive-check-lib.js +78 -1
- package/dist/scripts/qa-loop-app-server-driver-check.js +74 -0
- package/dist/scripts/qa-loop-surface-router-check.js +49 -0
- package/dist/scripts/release-check-dynamic-execute.js +1 -1
- package/dist/scripts/release-metadata-1-19-check.js +2 -2
- package/dist/scripts/release-parallel-check.js +17 -2
- package/dist/scripts/release-parallel-full-coverage-check.js +1 -1
- package/dist/scripts/release-readiness-report.js +6 -6
- package/dist/scripts/release-registry-check.js +33 -14
- package/dist/scripts/runtime-ts-rust-boundary-check.js +1 -1
- package/dist/scripts/search-visibility-gate-lib.js +124 -0
- package/dist/scripts/seo-audit-fixture-check.js +16 -0
- package/dist/scripts/seo-canonical-locale-check.js +19 -0
- package/dist/scripts/seo-cli-blackbox-check.js +18 -0
- package/dist/scripts/seo-geo-feature-fixture-quality-check.js +18 -0
- package/dist/scripts/seo-geo-geo-disambiguation-check.js +12 -0
- package/dist/scripts/seo-geo-no-unsupported-ranking-claims-check.js +18 -0
- package/dist/scripts/seo-geo-route-identity-check.js +12 -0
- package/dist/scripts/seo-geo-skill-rich-content-check.js +22 -0
- package/dist/scripts/seo-mutation-rollback-check.js +23 -0
- package/dist/scripts/seo-no-mutation-by-default-check.js +17 -0
- package/dist/scripts/seo-structured-data-visible-content-check.js +19 -0
- package/dist/scripts/sks-1-18-gate-lib.js +2 -2
- package/dist/scripts/sks-3-1-5-directive-check-lib.js +10 -1
- package/dist/scripts/source-intelligence-all-modes-check.js +9 -19
- package/dist/scripts/source-intelligence-policy-check.js +6 -6
- package/dist/scripts/triwiki-affected-graph-check.js +2 -2
- package/dist/scripts/ultra-search-provider-interface-check.js +27 -0
- package/package.json +26 -5
- package/schemas/search-visibility/finding-ledger.schema.json +36 -0
- package/schemas/search-visibility/gate.schema.json +22 -0
- package/schemas/search-visibility/mutation-plan.schema.json +27 -0
- package/schemas/search-visibility/site-inventory.schema.json +21 -0
- package/schemas/search-visibility/verification-report.schema.json +23 -0
- package/dist/core/mcp/xai-mcp-detector.js +0 -157
- package/dist/core/mcp/xai-search-adapter.js +0 -100
- package/dist/scripts/xai-mcp-capability-check.js +0 -14
|
@@ -1,18 +1,16 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
2
|
import { ensureDir, nowIso, sha256, writeJsonAtomic, writeTextAtomic } from '../fsx.js';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { detectCodexWebSearchCapability, runCodexWebSearch } from '../codex/codex-web-search-adapter.js';
|
|
3
|
+
import { detectCodexWebSearchCapability } from '../codex/codex-web-search-adapter.js';
|
|
4
|
+
import { runUltraSearch } from '../ultra-search/index.js';
|
|
6
5
|
import { buildSourceIntelligencePolicy, writeSourceIntelligencePolicyArtifact } from './source-intelligence-policy.js';
|
|
7
6
|
import { buildSourceIntelligenceProof } from './source-intelligence-proof.js';
|
|
8
7
|
import { buildAppshotsEvidence, writeAppshotsEvidenceArtifact } from './appshots-evidence.js';
|
|
9
|
-
export const SOURCE_INTELLIGENCE_EVIDENCE_SCHEMA = 'sks.source-intelligence-evidence.
|
|
8
|
+
export const SOURCE_INTELLIGENCE_EVIDENCE_SCHEMA = 'sks.source-intelligence-evidence.v2';
|
|
10
9
|
export async function runSourceIntelligence(input) {
|
|
11
10
|
const root = path.resolve(input.root || process.cwd());
|
|
12
11
|
const missionDir = path.resolve(input.missionDir);
|
|
13
12
|
const artifactDir = path.join(missionDir, 'source-intelligence');
|
|
14
13
|
await ensureDir(artifactDir);
|
|
15
|
-
const xaiDetection = input.xaiDetection || await detectXaiMcp({ root });
|
|
16
14
|
const codexWebCapability = detectCodexWebSearchCapability({
|
|
17
15
|
...(input.env ? { env: input.env } : {}),
|
|
18
16
|
...(input.offline === undefined ? {} : { offline: input.offline })
|
|
@@ -22,28 +20,27 @@ export async function runSourceIntelligence(input) {
|
|
|
22
20
|
...(input.offline === undefined ? {} : { offline: input.offline }),
|
|
23
21
|
...(input.context7Available === undefined ? {} : { context7Available: input.context7Available }),
|
|
24
22
|
codexWebCapability,
|
|
25
|
-
|
|
23
|
+
query: input.query,
|
|
24
|
+
...(input.xaiDetection === undefined ? {} : { xaiDetection: input.xaiDetection })
|
|
25
|
+
});
|
|
26
|
+
const context7 = await runContext7(input.query, {
|
|
27
|
+
required: policy.context7.required,
|
|
28
|
+
available: policy.context7.available,
|
|
29
|
+
offline: input.offline === true,
|
|
30
|
+
...(input.context7 ? { context7: input.context7 } : {})
|
|
31
|
+
});
|
|
32
|
+
const ultraMode = sourceModeToUltraMode(policy.mode);
|
|
33
|
+
const ultraSearch = await runUltraSearch({
|
|
34
|
+
root,
|
|
35
|
+
missionDir,
|
|
36
|
+
route: input.route || 'unknown',
|
|
37
|
+
query: input.query,
|
|
38
|
+
mode: ultraMode,
|
|
39
|
+
...(input.offline === undefined ? {} : { offline: input.offline }),
|
|
40
|
+
...(input.context7 ? { context7: input.context7 } : {}),
|
|
41
|
+
...(input.codexWebSearch ? { codexWebSearch: input.codexWebSearch } : {}),
|
|
42
|
+
...(input.env ? { env: input.env } : {})
|
|
26
43
|
});
|
|
27
|
-
const cacheKey = sha256(JSON.stringify({ route: input.route || 'unknown', query: input.query, mode: policy.mode })).slice(0, 16);
|
|
28
|
-
const providerTasks = [
|
|
29
|
-
runContext7(input.query, {
|
|
30
|
-
available: policy.context7.available,
|
|
31
|
-
offline: input.offline === true,
|
|
32
|
-
...(input.context7 ? { context7: input.context7 } : {})
|
|
33
|
-
}),
|
|
34
|
-
policy.codex_web_search.required ? runCodexWebSearch(input.query, {
|
|
35
|
-
...(input.codexWebSearch ? { search: input.codexWebSearch } : {}),
|
|
36
|
-
artifactDir,
|
|
37
|
-
...(input.offline === undefined ? {} : { offline: input.offline }),
|
|
38
|
-
...(input.env ? { env: input.env } : {})
|
|
39
|
-
}) : Promise.resolve(null),
|
|
40
|
-
policy.xai_mcp.required ? runXaiSearch(input.query, {
|
|
41
|
-
...(input.xaiSearch ? { search: input.xaiSearch } : {}),
|
|
42
|
-
artifactDir,
|
|
43
|
-
configured: true
|
|
44
|
-
}) : Promise.resolve(null)
|
|
45
|
-
];
|
|
46
|
-
const [context7, codexWeb, xaiSearch] = await Promise.all(providerTasks);
|
|
47
44
|
const appshots = buildAppshotsEvidence({
|
|
48
45
|
root,
|
|
49
46
|
prompt: input.query,
|
|
@@ -54,19 +51,17 @@ export async function runSourceIntelligence(input) {
|
|
|
54
51
|
...(input.appshots?.operatorActionRecorded === undefined ? {} : { operatorActionRecorded: input.appshots.operatorActionRecorded }),
|
|
55
52
|
...(input.appshots?.appshotsToolAvailable === undefined ? {} : { appshotsToolAvailable: input.appshots.appshotsToolAvailable })
|
|
56
53
|
});
|
|
57
|
-
const providersRequested =
|
|
58
|
-
'context7',
|
|
59
|
-
...(policy.codex_web_search.required ? ['codex_web_search'] : []),
|
|
60
|
-
...(policy.xai_mcp.required ? ['xai_search'] : [])
|
|
61
|
-
];
|
|
54
|
+
const providersRequested = policy.selected_providers;
|
|
62
55
|
const providersCompleted = [
|
|
63
|
-
...(context7.ok ? ['context7'] : []),
|
|
64
|
-
...(
|
|
65
|
-
...(
|
|
56
|
+
...(context7.ok && policy.context7.required ? ['context7'] : []),
|
|
57
|
+
...(ultraSearch.sources.some((source) => source.provider_id === 'codex_web') ? ['codex_web'] : []),
|
|
58
|
+
...(ultraSearch.sources.some((source) => source.provider_id === 'x_public') ? ['x_public'] : []),
|
|
59
|
+
'ultra_search'
|
|
66
60
|
];
|
|
67
|
-
const proof = buildSourceIntelligenceProof(policy, { context7,
|
|
68
|
-
const blockers = [...policy.blockers, ...context7.blockers, ...
|
|
69
|
-
const warnings = [...policy.warnings, ...
|
|
61
|
+
const proof = buildSourceIntelligenceProof(policy, { context7, ultra_search: ultraSearch, appshots });
|
|
62
|
+
const blockers = [...new Set([...policy.blockers, ...context7.blockers, ...appshots.blockers, ...proof.blockers])];
|
|
63
|
+
const warnings = [...new Set([...policy.warnings, ...ultraSearch.warnings, ...appshots.warnings])];
|
|
64
|
+
const cacheKey = sha256(JSON.stringify({ route: input.route || 'unknown', query: input.query, mode: policy.mode })).slice(0, 16);
|
|
70
65
|
const evidence = {
|
|
71
66
|
schema: SOURCE_INTELLIGENCE_EVIDENCE_SCHEMA,
|
|
72
67
|
generated_at: nowIso(),
|
|
@@ -81,12 +76,13 @@ export async function runSourceIntelligence(input) {
|
|
|
81
76
|
},
|
|
82
77
|
cache: {
|
|
83
78
|
key: cacheKey,
|
|
84
|
-
local_only: true
|
|
79
|
+
local_only: true,
|
|
80
|
+
ultra_search_hit: ultraSearch.cache.hit
|
|
85
81
|
},
|
|
86
82
|
policy,
|
|
87
83
|
context7,
|
|
88
|
-
codex_web_search:
|
|
89
|
-
|
|
84
|
+
codex_web_search: null,
|
|
85
|
+
ultra_search: ultraSearch,
|
|
90
86
|
appshots,
|
|
91
87
|
proof,
|
|
92
88
|
blockers,
|
|
@@ -106,15 +102,33 @@ export function renderSourceIntelligenceEvidenceMarkdown(evidence) {
|
|
|
106
102
|
`- Route: ${evidence.route}`,
|
|
107
103
|
`- Mode: ${evidence.mode}`,
|
|
108
104
|
`- Context7: ${evidence.context7.status}`,
|
|
109
|
-
`-
|
|
110
|
-
`-
|
|
105
|
+
`- UltraSearch: ${evidence.ultra_search.proof.ok ? 'ok' : 'partial'}`,
|
|
106
|
+
`- Legacy x-search MCP: not_required`,
|
|
111
107
|
`- Appshots: ${evidence.appshots?.status || 'not_required'}`,
|
|
112
108
|
`- Providers completed: ${evidence.parallel.providers_completed.join(', ') || 'none'}`,
|
|
113
109
|
`- Blockers: ${evidence.blockers.length ? evidence.blockers.join(', ') : 'none'}`,
|
|
114
110
|
''
|
|
115
111
|
].join('\n');
|
|
116
112
|
}
|
|
113
|
+
function sourceModeToUltraMode(mode) {
|
|
114
|
+
if (mode === 'ultra_fast')
|
|
115
|
+
return 'fast';
|
|
116
|
+
if (mode === 'ultra_deep')
|
|
117
|
+
return 'deep';
|
|
118
|
+
if (mode === 'ultra_exhaustive')
|
|
119
|
+
return 'exhaustive';
|
|
120
|
+
if (mode === 'url_acquisition')
|
|
121
|
+
return 'url_acquisition';
|
|
122
|
+
if (mode === 'x_search')
|
|
123
|
+
return 'x_search';
|
|
124
|
+
if (mode === 'offline_cache')
|
|
125
|
+
return 'offline_cache';
|
|
126
|
+
return 'balanced';
|
|
127
|
+
}
|
|
117
128
|
async function runContext7(query, opts) {
|
|
129
|
+
if (!opts.required) {
|
|
130
|
+
return { schema: 'sks.context7-source-evidence.v1', ok: true, status: 'not_required', query, result_count: 0, blockers: [] };
|
|
131
|
+
}
|
|
118
132
|
if (opts.available === false) {
|
|
119
133
|
return { schema: 'sks.context7-source-evidence.v1', ok: false, status: 'missing', query, result_count: 0, blockers: ['docs_context_missing'] };
|
|
120
134
|
}
|
|
@@ -35,7 +35,8 @@ export function computeTriWikiAffectedGraph(input) {
|
|
|
35
35
|
const gatePacks = new Set();
|
|
36
36
|
for (const impact of selected)
|
|
37
37
|
gatePacks.add(impact.gate_pack);
|
|
38
|
-
const
|
|
38
|
+
const includeProofLookup = input.includeProofLookup !== false;
|
|
39
|
+
const proofLookup = includeProofLookup ? selected.map((impact) => {
|
|
39
40
|
const cacheKey = computeTriWikiCacheKey({
|
|
40
41
|
root: input.root,
|
|
41
42
|
id: impact.gate_id,
|
|
@@ -46,7 +47,7 @@ export function computeTriWikiAffectedGraph(input) {
|
|
|
46
47
|
});
|
|
47
48
|
const hit = readReusableTriWikiProofCard({ root: input.root, subjectId: impact.gate_id, cacheKey: cacheKey.key });
|
|
48
49
|
return { impact, hit };
|
|
49
|
-
});
|
|
50
|
+
}) : [];
|
|
50
51
|
const reusedProofs = proofLookup
|
|
51
52
|
.filter((row) => row.hit.hit && row.hit.card && row.hit.path)
|
|
52
53
|
.map((row) => ({ gate_id: row.impact.gate_id, proof_id: row.hit.card.proof_id, path: row.hit.path }))
|
|
@@ -138,12 +138,10 @@ function sourceIntelligenceTrust(proof = {}) {
|
|
|
138
138
|
return { issues: [], summary: { required: false, status: 'not_required' } };
|
|
139
139
|
const proofBlockers = evidence.proof?.blockers || evidence.blockers || [];
|
|
140
140
|
const issues = [...proofBlockers];
|
|
141
|
-
if (evidence.policy?.xai_mcp?.required === true && evidence.xai_search?.ok !== true)
|
|
142
|
-
issues.push('xai_available_not_used');
|
|
143
141
|
if (evidence.policy?.context7?.required === true && evidence.context7?.ok !== true)
|
|
144
142
|
issues.push('context7_missing');
|
|
145
|
-
if (evidence.policy?.codex_web_search?.required === true && evidence.
|
|
146
|
-
issues.push('
|
|
143
|
+
if (evidence.policy?.codex_web_search?.required === true && evidence.ultra_search?.proof?.provider_independent !== true)
|
|
144
|
+
issues.push('ultra_search_provider_independent_proof_missing');
|
|
147
145
|
return {
|
|
148
146
|
issues: [...new Set(issues.map(String))],
|
|
149
147
|
summary: {
|
|
@@ -153,7 +151,7 @@ function sourceIntelligenceTrust(proof = {}) {
|
|
|
153
151
|
mode: evidence.mode || evidence.policy?.mode || 'unknown',
|
|
154
152
|
context7_status: evidence.context7?.status || 'unknown',
|
|
155
153
|
codex_web_status: evidence.codex_web_search?.status || 'not_required',
|
|
156
|
-
|
|
154
|
+
ultra_search_status: evidence.ultra_search?.proof?.ok === true ? 'verified' : evidence.ultra_search ? 'partial' : 'not_required',
|
|
157
155
|
providers_completed: evidence.parallel?.providers_completed || [],
|
|
158
156
|
blockers: proofBlockers
|
|
159
157
|
}
|