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.
Files changed (126) hide show
  1. package/README.md +35 -8
  2. package/crates/sks-core/Cargo.lock +1 -1
  3. package/crates/sks-core/Cargo.toml +1 -1
  4. package/crates/sks-core/src/main.rs +1 -1
  5. package/dist/bin/sks.js +1 -1
  6. package/dist/cli/command-registry.js +3 -1
  7. package/dist/cli/ultra-search-command.js +163 -0
  8. package/dist/cli/xai-command.js +28 -168
  9. package/dist/core/agents/agent-codex-cockpit.js +3 -3
  10. package/dist/core/agents/agent-runner-ollama.js +2 -0
  11. package/dist/core/agents/agent-wrongness.js +1 -1
  12. package/dist/core/agents/native-worker-backend-router.js +3 -0
  13. package/dist/core/bench.js +115 -0
  14. package/dist/core/code-structure.js +399 -11
  15. package/dist/core/codex-control/codex-app-server-v2-client.js +86 -2
  16. package/dist/core/codex-control/codex-fake-sdk-adapter.js +67 -9
  17. package/dist/core/codex-control/codex-reliability-shield.js +26 -5
  18. package/dist/core/codex-control/codex-task-runner.js +7 -1
  19. package/dist/core/codex-control/gpt-final-arbiter.js +4 -1
  20. package/dist/core/codex-control/gpt-final-review-schema.js +58 -0
  21. package/dist/core/codex-control/model-call-concurrency.js +1 -1
  22. package/dist/core/codex-native/core-skill-manifest.js +23 -0
  23. package/dist/core/commands/bench-command.js +11 -2
  24. package/dist/core/commands/code-structure-command.js +34 -2
  25. package/dist/core/commands/qa-loop-command.js +23 -7
  26. package/dist/core/commands/run-command.js +92 -2
  27. package/dist/core/commands/seo-command.js +130 -0
  28. package/dist/core/feature-fixtures.js +6 -0
  29. package/dist/core/feature-registry.js +3 -1
  30. package/dist/core/fsx.js +1 -1
  31. package/dist/core/hooks-runtime.js +9 -1
  32. package/dist/core/init.js +8 -6
  33. package/dist/core/lean-engineering-policy.js +159 -0
  34. package/dist/core/pipeline-internals/runtime-core.js +15 -5
  35. package/dist/core/proof/auto-finalize.js +3 -2
  36. package/dist/core/proof/proof-schema.js +2 -1
  37. package/dist/core/proof/proof-writer.js +1 -0
  38. package/dist/core/proof/route-adapter.js +4 -2
  39. package/dist/core/proof/route-finalizer.js +35 -3
  40. package/dist/core/qa-loop/qa-app-server-driver.js +134 -0
  41. package/dist/core/qa-loop/qa-contract-v2.js +231 -0
  42. package/dist/core/qa-loop/qa-gate-v2.js +132 -0
  43. package/dist/core/qa-loop/qa-runtime-artifacts.js +53 -0
  44. package/dist/core/qa-loop/qa-surface-router.js +114 -0
  45. package/dist/core/qa-loop/qa-types.js +18 -0
  46. package/dist/core/qa-loop.js +83 -26
  47. package/dist/core/release/gate-manifest.js +1 -0
  48. package/dist/core/release/sla-scheduler.js +1 -1
  49. package/dist/core/release-parallel-full-coverage.js +1 -1
  50. package/dist/core/routes.js +96 -14
  51. package/dist/core/search-visibility/adapter-registry.js +26 -0
  52. package/dist/core/search-visibility/adapters/next-app.js +6 -0
  53. package/dist/core/search-visibility/adapters/next-pages.js +6 -0
  54. package/dist/core/search-visibility/adapters/static-site.js +6 -0
  55. package/dist/core/search-visibility/analyzers.js +377 -0
  56. package/dist/core/search-visibility/artifacts.js +183 -0
  57. package/dist/core/search-visibility/discovery.js +347 -0
  58. package/dist/core/search-visibility/index.js +199 -0
  59. package/dist/core/search-visibility/mission.js +67 -0
  60. package/dist/core/search-visibility/mutation.js +314 -0
  61. package/dist/core/search-visibility/types.js +2 -0
  62. package/dist/core/search-visibility/verifier.js +60 -0
  63. package/dist/core/source-intelligence/source-intelligence-policy.js +45 -26
  64. package/dist/core/source-intelligence/source-intelligence-proof.js +10 -16
  65. package/dist/core/source-intelligence/source-intelligence-runner.js +56 -42
  66. package/dist/core/triwiki/triwiki-affected-graph.js +3 -2
  67. package/dist/core/trust-kernel/trust-report.js +3 -5
  68. package/dist/core/ultra-search/index.js +3 -0
  69. package/dist/core/ultra-search/runtime.js +502 -0
  70. package/dist/core/ultra-search/types.js +3 -0
  71. package/dist/core/version.js +1 -1
  72. package/dist/scripts/agent-visual-consistency-check.js +1 -1
  73. package/dist/scripts/check-architecture.js +40 -7
  74. package/dist/scripts/check-command-module-budget.js +43 -5
  75. package/dist/scripts/check-pipeline-budget.js +17 -30
  76. package/dist/scripts/check-publish-tag.js +33 -6
  77. package/dist/scripts/check-route-modularity.js +25 -33
  78. package/dist/scripts/check-runtime-schemas.js +22 -0
  79. package/dist/scripts/codex-control-all-pipelines-check.js +1 -0
  80. package/dist/scripts/codex-control-model-capacity-fallback-check.js +53 -0
  81. package/dist/scripts/config-managed-merge-callsite-coverage-check.js +7 -1
  82. package/dist/scripts/core-skill-immutable-sync-check.js +3 -2
  83. package/dist/scripts/core-skill-integrity-blackbox.js +3 -2
  84. package/dist/scripts/core-skill-manifest-check.js +7 -2
  85. package/dist/scripts/geo-claim-evidence-check.js +18 -0
  86. package/dist/scripts/geo-cli-blackbox-check.js +18 -0
  87. package/dist/scripts/geo-crawler-policy-check.js +16 -0
  88. package/dist/scripts/geo-llms-txt-optional-check.js +19 -0
  89. package/dist/scripts/gpt-final-arbiter-check.js +4 -1
  90. package/dist/scripts/loop-directive-check-lib.js +78 -1
  91. package/dist/scripts/qa-loop-app-server-driver-check.js +74 -0
  92. package/dist/scripts/qa-loop-surface-router-check.js +49 -0
  93. package/dist/scripts/release-check-dynamic-execute.js +1 -1
  94. package/dist/scripts/release-metadata-1-19-check.js +2 -2
  95. package/dist/scripts/release-parallel-check.js +17 -2
  96. package/dist/scripts/release-parallel-full-coverage-check.js +1 -1
  97. package/dist/scripts/release-readiness-report.js +6 -6
  98. package/dist/scripts/release-registry-check.js +33 -14
  99. package/dist/scripts/runtime-ts-rust-boundary-check.js +1 -1
  100. package/dist/scripts/search-visibility-gate-lib.js +124 -0
  101. package/dist/scripts/seo-audit-fixture-check.js +16 -0
  102. package/dist/scripts/seo-canonical-locale-check.js +19 -0
  103. package/dist/scripts/seo-cli-blackbox-check.js +18 -0
  104. package/dist/scripts/seo-geo-feature-fixture-quality-check.js +18 -0
  105. package/dist/scripts/seo-geo-geo-disambiguation-check.js +12 -0
  106. package/dist/scripts/seo-geo-no-unsupported-ranking-claims-check.js +18 -0
  107. package/dist/scripts/seo-geo-route-identity-check.js +12 -0
  108. package/dist/scripts/seo-geo-skill-rich-content-check.js +22 -0
  109. package/dist/scripts/seo-mutation-rollback-check.js +23 -0
  110. package/dist/scripts/seo-no-mutation-by-default-check.js +17 -0
  111. package/dist/scripts/seo-structured-data-visible-content-check.js +19 -0
  112. package/dist/scripts/sks-1-18-gate-lib.js +2 -2
  113. package/dist/scripts/sks-3-1-5-directive-check-lib.js +10 -1
  114. package/dist/scripts/source-intelligence-all-modes-check.js +9 -19
  115. package/dist/scripts/source-intelligence-policy-check.js +6 -6
  116. package/dist/scripts/triwiki-affected-graph-check.js +2 -2
  117. package/dist/scripts/ultra-search-provider-interface-check.js +27 -0
  118. package/package.json +26 -5
  119. package/schemas/search-visibility/finding-ledger.schema.json +36 -0
  120. package/schemas/search-visibility/gate.schema.json +22 -0
  121. package/schemas/search-visibility/mutation-plan.schema.json +27 -0
  122. package/schemas/search-visibility/site-inventory.schema.json +21 -0
  123. package/schemas/search-visibility/verification-report.schema.json +23 -0
  124. package/dist/core/mcp/xai-mcp-detector.js +0 -157
  125. package/dist/core/mcp/xai-search-adapter.js +0 -100
  126. 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