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,100 +0,0 @@
|
|
|
1
|
-
import path from 'node:path';
|
|
2
|
-
import { ensureDir, nowIso, sha256, writeJsonAtomic } from '../fsx.js';
|
|
3
|
-
export const XAI_SEARCH_EVIDENCE_SCHEMA = 'sks.xai-search-evidence.v1';
|
|
4
|
-
export async function runXaiSearch(query, opts = {}) {
|
|
5
|
-
const timeoutMs = opts.timeoutMs || 10_000;
|
|
6
|
-
if (opts.configured === false)
|
|
7
|
-
return blockedEvidence(query, timeoutMs, 'not_configured', ['xai_mcp_missing']);
|
|
8
|
-
if (!opts.search)
|
|
9
|
-
return blockedEvidence(query, timeoutMs, 'blocked', ['xai_search_adapter_missing']);
|
|
10
|
-
try {
|
|
11
|
-
const raw = await withTimeout(opts.search(query), timeoutMs);
|
|
12
|
-
const results = normalizeXaiSearchResults(raw);
|
|
13
|
-
let rawArtifact = null;
|
|
14
|
-
if (opts.artifactDir) {
|
|
15
|
-
await ensureDir(opts.artifactDir);
|
|
16
|
-
rawArtifact = path.join(opts.artifactDir, `xai-search-raw-${sha256(JSON.stringify({ query, raw })).slice(0, 12)}.json`);
|
|
17
|
-
await writeJsonAtomic(rawArtifact, { schema: 'sks.xai-search-raw-local-only.v1', generated_at: nowIso(), local_only: true, query, raw });
|
|
18
|
-
}
|
|
19
|
-
return {
|
|
20
|
-
schema: XAI_SEARCH_EVIDENCE_SCHEMA,
|
|
21
|
-
generated_at: nowIso(),
|
|
22
|
-
ok: true,
|
|
23
|
-
query,
|
|
24
|
-
status: 'completed',
|
|
25
|
-
timeout_ms: timeoutMs,
|
|
26
|
-
results: results.map((record) => ({ ...record, local_only_raw_artifact: rawArtifact })),
|
|
27
|
-
raw_response_artifact: rawArtifact,
|
|
28
|
-
redacted_summary: {
|
|
29
|
-
result_count: results.length,
|
|
30
|
-
urls: results.map((record) => record.url)
|
|
31
|
-
},
|
|
32
|
-
blockers: []
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
catch (err) {
|
|
36
|
-
const timeout = err instanceof Error && err.message === 'xai_search_timeout';
|
|
37
|
-
return blockedEvidence(query, timeoutMs, timeout ? 'timeout' : 'blocked', [
|
|
38
|
-
timeout ? 'xai_search_timeout' : `xai_search_failure:${err instanceof Error ? err.message : String(err)}`
|
|
39
|
-
]);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
export function normalizeXaiSearchResults(raw) {
|
|
43
|
-
const rows = Array.isArray(raw)
|
|
44
|
-
? raw
|
|
45
|
-
: Array.isArray(raw?.results)
|
|
46
|
-
? raw.results
|
|
47
|
-
: Array.isArray(raw?.data)
|
|
48
|
-
? raw.data
|
|
49
|
-
: [];
|
|
50
|
-
return rows.map((row, index) => ({
|
|
51
|
-
provider: 'xai',
|
|
52
|
-
id: String(row.id || row.url || row.link || `xai-${index + 1}`),
|
|
53
|
-
title: String(row.title || row.name || row.heading || `X AI result ${index + 1}`),
|
|
54
|
-
url: row.url || row.link || null,
|
|
55
|
-
snippet: String(row.snippet || row.summary || row.text || ''),
|
|
56
|
-
published_at: row.published_at || row.publishedAt || row.date || null,
|
|
57
|
-
local_only_raw_artifact: null
|
|
58
|
-
}));
|
|
59
|
-
}
|
|
60
|
-
export function redactXaiRawResponse(raw) {
|
|
61
|
-
const results = normalizeXaiSearchResults(raw);
|
|
62
|
-
return {
|
|
63
|
-
provider: 'xai',
|
|
64
|
-
result_count: results.length,
|
|
65
|
-
results: results.map((result) => ({
|
|
66
|
-
title: result.title,
|
|
67
|
-
url: result.url,
|
|
68
|
-
snippet: result.snippet.slice(0, 240),
|
|
69
|
-
published_at: result.published_at
|
|
70
|
-
}))
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
function blockedEvidence(query, timeoutMs, status, blockers) {
|
|
74
|
-
return {
|
|
75
|
-
schema: XAI_SEARCH_EVIDENCE_SCHEMA,
|
|
76
|
-
generated_at: nowIso(),
|
|
77
|
-
ok: false,
|
|
78
|
-
query,
|
|
79
|
-
status,
|
|
80
|
-
timeout_ms: timeoutMs,
|
|
81
|
-
results: [],
|
|
82
|
-
raw_response_artifact: null,
|
|
83
|
-
redacted_summary: { result_count: 0, urls: [] },
|
|
84
|
-
blockers
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
function withTimeout(promise, timeoutMs) {
|
|
88
|
-
return new Promise((resolve, reject) => {
|
|
89
|
-
const timer = setTimeout(() => reject(new Error('xai_search_timeout')), timeoutMs);
|
|
90
|
-
timer.unref?.();
|
|
91
|
-
promise.then((value) => {
|
|
92
|
-
clearTimeout(timer);
|
|
93
|
-
resolve(value);
|
|
94
|
-
}, (err) => {
|
|
95
|
-
clearTimeout(timer);
|
|
96
|
-
reject(err);
|
|
97
|
-
});
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
//# sourceMappingURL=xai-search-adapter.js.map
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
// @ts-nocheck
|
|
3
|
-
import { assertGate, emitGate, importDist } from './sks-1-18-gate-lib.js';
|
|
4
|
-
const detector = await importDist('core/mcp/xai-mcp-detector.js');
|
|
5
|
-
const detection = detector.detectXaiMcpFromConfig([
|
|
6
|
-
{ path: 'fixture.toml', source: 'provided', text: '[mcp_servers.grok]\ntools = ["search", "query"]\n' }
|
|
7
|
-
]);
|
|
8
|
-
assertGate(detection.ok === true, 'X AI detector must not fail');
|
|
9
|
-
assertGate(detection.configured === true, 'X AI detector must detect configured Grok MCP');
|
|
10
|
-
assertGate(detection.search_capable === true, 'X AI detector must detect search-capable tools');
|
|
11
|
-
const missing = detector.detectXaiMcpFromConfig([]);
|
|
12
|
-
assertGate(missing.ok === true && missing.status === 'missing', 'missing X AI MCP must be ok fallback');
|
|
13
|
-
emitGate('xai-mcp:capability', { configured_status: detection.status, missing_status: missing.status });
|
|
14
|
-
//# sourceMappingURL=xai-mcp-capability-check.js.map
|