opmsec 0.1.4 → 0.1.5

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 (139) hide show
  1. package/.env.example +1 -0
  2. package/README.md +71 -275
  3. package/bun.lock +3 -3
  4. package/docs/architecture/agents.mdx +11 -59
  5. package/docs/architecture/benchmarks.mdx +20 -46
  6. package/docs/architecture/overview.mdx +31 -38
  7. package/docs/architecture/scanner.mdx +11 -37
  8. package/docs/cli/audit.mdx +9 -12
  9. package/docs/cli/check.mdx +12 -26
  10. package/docs/cli/fix.mdx +10 -30
  11. package/docs/cli/info.mdx +12 -19
  12. package/docs/cli/install.mdx +27 -39
  13. package/docs/cli/push.mdx +40 -57
  14. package/docs/cli/register-agent.mdx +21 -53
  15. package/docs/cli/view.mdx +12 -29
  16. package/docs/concepts/ens-records.mdx +44 -0
  17. package/docs/concepts/multi-agent-consensus.mdx +18 -36
  18. package/docs/concepts/on-chain-registry.mdx +22 -49
  19. package/docs/concepts/security-model.mdx +20 -52
  20. package/docs/concepts/zk-agent-verification.mdx +26 -64
  21. package/docs/contract/events.mdx +13 -74
  22. package/docs/contract/functions.mdx +40 -126
  23. package/docs/contract/overview.mdx +17 -36
  24. package/docs/introduction.mdx +22 -25
  25. package/docs/mint.json +1 -0
  26. package/docs/quickstart.mdx +34 -70
  27. package/docs/system-design.png +0 -0
  28. package/package.json +5 -5
  29. package/packages/cli/src/commands/author-view.tsx +87 -2
  30. package/packages/cli/src/commands/check.tsx +18 -5
  31. package/packages/cli/src/commands/fix.tsx +25 -12
  32. package/packages/cli/src/commands/info.tsx +92 -4
  33. package/packages/cli/src/commands/install.tsx +54 -8
  34. package/packages/cli/src/commands/push.tsx +112 -0
  35. package/packages/cli/src/commands/register-agent.tsx +72 -31
  36. package/packages/cli/src/index.tsx +4 -4
  37. package/packages/cli/src/services/ens-records.ts +525 -0
  38. package/packages/core/src/benchmarks.ts +116 -0
  39. package/packages/core/src/constants.ts +18 -6
  40. package/packages/core/src/model-rankings.ts +40 -15
  41. package/packages/core/src/types.ts +10 -0
  42. package/packages/core/src/utils.ts +3 -3
  43. package/packages/scanner/src/index.ts +2 -1
  44. package/packages/scanner/src/queue/memory-queue.ts +7 -2
  45. package/packages/scanner/src/services/benchmark-runner.ts +86 -1
  46. package/packages/scanner/src/services/fileverse.ts +61 -12
  47. package/packages/web/.next/BUILD_ID +1 -1
  48. package/packages/web/.next/app-build-manifest.json +7 -18
  49. package/packages/web/.next/build-manifest.json +6 -19
  50. package/packages/web/.next/images-manifest.json +1 -1
  51. package/packages/web/.next/required-server-files.json +2 -2
  52. package/packages/web/.next/server/app/_not-found/page.js +2 -2
  53. package/packages/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  54. package/packages/web/.next/server/app/_not-found.html +1 -1
  55. package/packages/web/.next/server/app/_not-found.rsc +4 -2
  56. package/packages/web/.next/server/app/index.html +6 -1
  57. package/packages/web/.next/server/app/index.rsc +5 -3
  58. package/packages/web/.next/server/app/page.js +272 -2
  59. package/packages/web/.next/server/app/page_client-reference-manifest.js +1 -1
  60. package/packages/web/.next/server/app-paths-manifest.json +0 -1
  61. package/packages/web/.next/server/middleware-build-manifest.js +22 -1
  62. package/packages/web/.next/server/middleware-react-loadable-manifest.js +1 -1
  63. package/packages/web/.next/server/next-font-manifest.js +1 -1
  64. package/packages/web/.next/server/next-font-manifest.json +1 -1
  65. package/packages/web/.next/server/pages/404.html +1 -1
  66. package/packages/web/.next/server/pages/500.html +1 -1
  67. package/packages/web/.next/server/pages-manifest.json +1 -6
  68. package/packages/web/.next/server/server-reference-manifest.js +1 -1
  69. package/packages/web/.next/server/server-reference-manifest.json +5 -1
  70. package/packages/web/.next/server/webpack-runtime.js +209 -1
  71. package/packages/web/.next/static/chunks/174-5b5efcb3b8efcc01.js +1 -0
  72. package/packages/web/.next/static/chunks/app/layout-de8e841104500505.js +1 -0
  73. package/packages/web/.next/static/chunks/app/layout.js +69 -0
  74. package/packages/web/.next/static/chunks/app/page-7e086379698b9fb0.js +1 -0
  75. package/packages/web/.next/static/chunks/app/page.js +357 -0
  76. package/packages/web/.next/static/chunks/{main-ee293fa6aa18bdd1.js → main-4e8d71b5ef7ee7e3.js} +1 -1
  77. package/packages/web/.next/static/chunks/webpack-0dcd67569eb46132.js +1 -0
  78. package/packages/web/.next/static/chunks/webpack.js +1393 -0
  79. package/packages/web/.next/static/css/102562cf2d0ae9b0.css +3 -0
  80. package/packages/web/.next/static/development/_buildManifest.js +1 -0
  81. package/packages/web/.next/static/development/_ssgManifest.js +1 -0
  82. package/packages/web/.next/static/media/4cf2300e9c8272f7-s.p.woff2 +0 -0
  83. package/packages/web/.next/static/media/747892c23ea88013-s.woff2 +0 -0
  84. package/packages/web/.next/static/media/8d697b304b401681-s.woff2 +0 -0
  85. package/packages/web/.next/static/media/93f479601ee12b01-s.p.woff2 +0 -0
  86. package/packages/web/.next/static/media/9610d9e46709d722-s.woff2 +0 -0
  87. package/packages/web/.next/static/media/ba015fad6dcf6784-s.woff2 +0 -0
  88. package/packages/web/.next/static/webpack/16f18baa938a434c.webpack.hot-update.json +1 -0
  89. package/packages/web/.next/static/webpack/5fe9fe8578f9c3d2.webpack.hot-update.json +1 -0
  90. package/packages/web/.next/static/webpack/653e365406c0d9ac.webpack.hot-update.json +1 -0
  91. package/packages/web/.next/static/webpack/6800169a899e3a8b.webpack.hot-update.json +1 -0
  92. package/packages/web/.next/static/webpack/73c7d02260cc80e4.webpack.hot-update.json +1 -0
  93. package/packages/web/.next/static/webpack/a2d85d19aa028de1.webpack.hot-update.json +1 -0
  94. package/packages/web/.next/static/webpack/app/layout.16f18baa938a434c.hot-update.js +22 -0
  95. package/packages/web/.next/static/webpack/app/layout.5fe9fe8578f9c3d2.hot-update.js +22 -0
  96. package/packages/web/.next/static/webpack/app/layout.653e365406c0d9ac.hot-update.js +22 -0
  97. package/packages/web/.next/static/webpack/app/layout.6800169a899e3a8b.hot-update.js +22 -0
  98. package/packages/web/.next/static/webpack/app/layout.73c7d02260cc80e4.hot-update.js +22 -0
  99. package/packages/web/.next/static/webpack/app/layout.a2d85d19aa028de1.hot-update.js +22 -0
  100. package/packages/web/.next/static/webpack/app/page.653e365406c0d9ac.hot-update.js +22 -0
  101. package/packages/web/.next/static/webpack/app/page.6800169a899e3a8b.hot-update.js +22 -0
  102. package/packages/web/.next/static/webpack/app/page.73c7d02260cc80e4.hot-update.js +22 -0
  103. package/packages/web/.next/static/webpack/app/page.a2d85d19aa028de1.hot-update.js +22 -0
  104. package/packages/web/.next/static/webpack/webpack.16f18baa938a434c.hot-update.js +12 -0
  105. package/packages/web/.next/static/webpack/webpack.5fe9fe8578f9c3d2.hot-update.js +12 -0
  106. package/packages/web/.next/static/webpack/webpack.653e365406c0d9ac.hot-update.js +12 -0
  107. package/packages/web/.next/static/webpack/webpack.6800169a899e3a8b.hot-update.js +12 -0
  108. package/packages/web/.next/static/webpack/webpack.73c7d02260cc80e4.hot-update.js +12 -0
  109. package/packages/web/.next/static/webpack/webpack.a2d85d19aa028de1.hot-update.js +12 -0
  110. package/packages/web/.next/trace +2 -2
  111. package/packages/web/app/globals.css +197 -51
  112. package/packages/web/app/layout.tsx +6 -3
  113. package/packages/web/app/page.tsx +791 -312
  114. package/packages/web/bun.lock +66 -105
  115. package/packages/web/next.config.ts +8 -1
  116. package/packages/web/package.json +5 -2
  117. package/packages/web/postcss.config.mjs +2 -2
  118. package/packages/web/public/apple-icon.png +1 -0
  119. package/packages/web/public/dependency-bottleneck.png +0 -0
  120. package/packages/web/public/icon-dark-32x32.png +1 -0
  121. package/packages/web/public/icon-light-32x32.png +1 -0
  122. package/packages/web/public/icon.svg +1 -0
  123. package/packages/web/public/nextjs-cve-announcement.png +0 -0
  124. package/packages/web/public/phantomraven-npm-attack.png +0 -0
  125. package/packages/web/public/placeholder-logo.png +1 -0
  126. package/packages/web/public/placeholder-logo.svg +1 -0
  127. package/packages/web/public/placeholder-user.jpg +1 -0
  128. package/packages/web/public/placeholder.jpg +1 -0
  129. package/packages/web/public/placeholder.svg +1 -0
  130. package/packages/web/public/react-cve-meme.png +0 -0
  131. package/packages/web/public/wallet-drain-exploit.png +0 -0
  132. package/packages/web/styles/globals.css +125 -0
  133. package/packages/web/.next/static/chunks/app/layout-28a489fb4398663f.js +0 -1
  134. package/packages/web/.next/static/chunks/app/page-e58ccdb78625bce6.js +0 -1
  135. package/packages/web/.next/static/chunks/webpack-e1ae44446e7f7355.js +0 -1
  136. package/packages/web/.next/static/css/21d69157e271f2ab.css +0 -3
  137. package/packages/web/tailwind.config.ts +0 -48
  138. /package/packages/web/.next/static/{2XIFCTTKVZwN_RsNE-Rrr → 0esGzFBCzREfVwijEGDfL}/_buildManifest.js +0 -0
  139. /package/packages/web/.next/static/{2XIFCTTKVZwN_RsNE-Rrr → 0esGzFBCzREfVwijEGDfL}/_ssgManifest.js +0 -0
@@ -53,26 +53,51 @@ export async function fetchModelRankings(): Promise<ModelRanking[]> {
53
53
 
54
54
  export function getDefaultRankings(): ModelRanking[] {
55
55
  return [
56
- { id: '1', name: 'Claude Sonnet 4', slug: 'claude-sonnet-4', intelligenceIndex: 55, codingIndex: 52 },
57
- { id: '2', name: 'GPT-4.1', slug: 'gpt-4.1', intelligenceIndex: 50, codingIndex: 48 },
58
- { id: '3', name: 'Gemini 2.5 Flash', slug: 'gemini-2.5-flash', intelligenceIndex: 52, codingIndex: 45 },
59
- { id: '4', name: 'DeepSeek Chat', slug: 'deepseek-chat', intelligenceIndex: 42, codingIndex: 40 },
60
- { id: '5', name: 'GPT-4.1-mini', slug: 'gpt-4.1-mini', intelligenceIndex: 40, codingIndex: 38 },
61
- { id: '6', name: 'GPT-4.1-nano', slug: 'gpt-4.1-nano', intelligenceIndex: 35, codingIndex: 32 },
56
+ { id: '1', name: 'Gemini 3.1 Pro Preview', slug: 'gemini-3.1-pro-preview', intelligenceIndex: 57, codingIndex: 55 },
57
+ { id: '2', name: 'GPT-5.4', slug: 'gpt-5.4', intelligenceIndex: 57, codingIndex: 55 },
58
+ { id: '3', name: 'GPT-5.3 Codex', slug: 'gpt-5.3-codex', intelligenceIndex: 54, codingIndex: 52 },
59
+ { id: '4', name: 'Claude Opus 4.6', slug: 'claude-opus-4-6', intelligenceIndex: 53, codingIndex: 51 },
60
+ { id: '5', name: 'Claude Sonnet 4.6', slug: 'claude-sonnet-4-6', intelligenceIndex: 52, codingIndex: 50 },
61
+ { id: '6', name: 'GPT-5.2', slug: 'gpt-5.2', intelligenceIndex: 51, codingIndex: 49 },
62
+ { id: '7', name: 'GLM-5', slug: 'glm-5', intelligenceIndex: 50, codingIndex: 48 },
63
+ { id: '8', name: 'Grok 4.2 Beta 0309', slug: 'grok-4-2-beta-0309', intelligenceIndex: 48, codingIndex: 46 },
64
+ { id: '9', name: 'Kimi K2.5', slug: 'kimi-k2-5', intelligenceIndex: 47, codingIndex: 45 },
65
+ { id: '10', name: 'Gemini 3 Flash', slug: 'gemini-3-flash', intelligenceIndex: 46, codingIndex: 44 },
66
+ { id: '11', name: 'Qwen 3.5', slug: 'qwen-3-5', intelligenceIndex: 45, codingIndex: 43 },
67
+ { id: '12', name: 'MiniMax-M2.5', slug: 'minimax-m2-5', intelligenceIndex: 42, codingIndex: 40 },
68
+ { id: '13', name: 'DeepSeek V3.2', slug: 'deepseek-v3-2', intelligenceIndex: 42, codingIndex: 40 },
69
+ { id: '14', name: 'MiMo V2 Flash Feb 2026', slug: 'mimo-v2-flash-feb-2026', intelligenceIndex: 41, codingIndex: 39 },
70
+ { id: '15', name: 'Grok 4.1 Fast', slug: 'grok-4-1-fast', intelligenceIndex: 39, codingIndex: 37 },
71
+ { id: '16', name: 'Claude 4.5 Haiku', slug: 'claude-4-5-haiku', intelligenceIndex: 37, codingIndex: 35 },
72
+ { id: '17', name: 'NVIDIA Nemotron 3 Super', slug: 'nvidia-nemotron-3-super', intelligenceIndex: 36, codingIndex: 34 },
73
+ { id: '18', name: 'Nova 2.0 Pro Preview', slug: 'nova-2-0-pro-preview', intelligenceIndex: 36, codingIndex: 34 },
74
+ { id: '19', name: 'Gemini 3.1 Flash Lite Preview', slug: 'gemini-3-1-flash-lite-preview', intelligenceIndex: 34, codingIndex: 32 },
75
+ { id: '20', name: 'gpt-oss-120B', slug: 'gpt-oss-120b', intelligenceIndex: 33, codingIndex: 31 },
76
+ { id: '21', name: 'K-EXAONE', slug: 'k-exaone', intelligenceIndex: 32, codingIndex: 30 },
77
+ { id: '22', name: 'gpt-oss-20B', slug: 'gpt-oss-20b', intelligenceIndex: 24, codingIndex: 22 },
78
+ { id: '23', name: 'NVIDIA Nemotron 3 Nano', slug: 'nvidia-nemotron-3-nano', intelligenceIndex: 24, codingIndex: 22 },
79
+ { id: '24', name: 'K2 Think V2', slug: 'k2-think-v2', intelligenceIndex: 24, codingIndex: 22 },
80
+ { id: '25', name: 'Mi:dm K 2.5 Pro', slug: 'midm-k-2-5-pro', intelligenceIndex: 23, codingIndex: 21 },
81
+ { id: '26', name: 'Mistral Large 3', slug: 'mistral-large-3', intelligenceIndex: 23, codingIndex: 21 },
82
+ { id: '27', name: 'Llama 4 Maverick', slug: 'llama-4-maverick', intelligenceIndex: 18, codingIndex: 16 },
62
83
  ];
63
84
  }
64
85
 
65
86
  const MODEL_SLUGS: Record<string, string> = {
66
- 'anthropic/claude-sonnet-4-20250514': 'claude-sonnet-4',
67
- 'anthropic/claude-sonnet-4': 'claude-sonnet-4',
87
+ 'anthropic/claude-opus-4.6': 'claude-opus-4-6',
88
+ 'anthropic/claude-sonnet-4.6': 'claude-sonnet-4-6',
89
+ 'anthropic/claude-opus-4': 'claude-opus-4-6',
90
+ 'google/gemini-3.1-pro-preview': 'gemini-3.1-pro-preview',
91
+ 'google/gemini-3-flash': 'gemini-3-flash',
68
92
  'google/gemini-2.5-flash': 'gemini-2.5-flash',
69
- 'deepseek/deepseek-chat': 'deepseek-chat',
70
- 'openai/gpt-4.1': 'gpt-4.1',
71
- 'gpt-4.1': 'gpt-4.1',
72
- 'openai/gpt-4.1-mini': 'gpt-4.1-mini',
73
- 'gpt-4.1-mini': 'gpt-4.1-mini',
74
- 'openai/gpt-4.1-nano': 'gpt-4.1-nano',
75
- 'gpt-4.1-nano': 'gpt-4.1-nano',
93
+ 'deepseek/deepseek-v3.2': 'deepseek-v3-2',
94
+ 'deepseek/deepseek-chat': 'deepseek-v3-2',
95
+ 'openai/gpt-5.4': 'gpt-5.4',
96
+ 'gpt-5.4': 'gpt-5.4',
97
+ 'openai/gpt-5.3-codex': 'gpt-5.3-codex',
98
+ 'gpt-5.3-codex': 'gpt-5.3-codex',
99
+ 'openai/gpt-5.2': 'gpt-5.2',
100
+ 'gpt-5.2': 'gpt-5.2',
76
101
  };
77
102
 
78
103
  function findModel(rankings: ModelRanking[], modelSlug: string): ModelRanking | undefined {
@@ -143,3 +143,13 @@ export interface CheckReport {
143
143
  deps: CheckDepResult[];
144
144
  agents: CheckAgentResult[];
145
145
  }
146
+
147
+ export interface OPMENSRecords {
148
+ version?: string;
149
+ checksum?: string;
150
+ fileverse?: string;
151
+ riskScore?: string;
152
+ packages?: string;
153
+ signature?: string;
154
+ contract?: string;
155
+ }
@@ -1,5 +1,5 @@
1
1
  import { HIGH_RISK_THRESHOLD, MEDIUM_RISK_THRESHOLD } from './constants';
2
- import type { RiskLevel, AgentScanResult } from './types';
2
+ import type { RiskLevel, AgentScanResult, SupplyChainIndicators, VersionAnalysis } from './types';
3
3
 
4
4
  export function classifyRisk(score: number): RiskLevel {
5
5
  if (score >= HIGH_RISK_THRESHOLD) return 'HIGH';
@@ -145,7 +145,7 @@ export function normalizeScanResult(raw: unknown): AgentScanResult | null {
145
145
  : [];
146
146
 
147
147
  const sci = deepFindObj(o, ['supply_chain_indicators', 'supplyChainIndicators', 'indicators']);
148
- const supply_chain_indicators = sci ?? {
148
+ const supply_chain_indicators: SupplyChainIndicators = (sci as SupplyChainIndicators) ?? {
149
149
  has_install_scripts: false,
150
150
  has_native_bindings: false,
151
151
  has_obfuscated_code: false,
@@ -157,7 +157,7 @@ export function normalizeScanResult(raw: unknown): AgentScanResult | null {
157
157
  };
158
158
 
159
159
  const va = deepFindObj(o, ['version_analysis', 'versionAnalysis']);
160
- const version_analysis = va ?? {
160
+ const version_analysis: VersionAnalysis = (va as VersionAnalysis) ?? {
161
161
  version_reviewed: deepFind(o, ['version', 'version_reviewed'], 'string') ?? '',
162
162
  previous_versions_reviewed: [],
163
163
  changelog_risk: 'NONE',
@@ -8,8 +8,9 @@ export { callLLM, callLLMRaw, getLLMProvider } from './services/openrouter';
8
8
  export { fetchPackageData, extractMetadata, buildVersionHistory, fetchSourceFiles, extractLocalSourceFiles, buildLocalPackageData } from './services/npm-registry';
9
9
  export { submitScoreOnChain, setReportURIOnChain } from './services/contract-writer';
10
10
  export { uploadReportToFileverse, uploadCheckReportToFileverse, fetchReportFromFileverse } from './services/fileverse';
11
+ export type { FileverseUploadResult } from './services/fileverse';
11
12
  export { formatCheckReportAsMarkdown } from './services/report-formatter';
12
- export { runBenchmarkSuite, type AgentCandidate, type BenchmarkRunResult } from './services/benchmark-runner';
13
+ export { runBenchmarkSuite, runBatchBenchmarkSuite, type AgentCandidate, type BenchmarkRunResult, type BatchBenchmarkRunResult } from './services/benchmark-runner';
13
14
  export { generateProof, verifyProof, generateCommitment, proofToOnChainBytes, type ZKProof } from './services/zk-verifier';
14
15
 
15
16
  if (import.meta.main) {
@@ -8,6 +8,7 @@ import { uploadReportToFileverse } from '../services/fileverse';
8
8
  export interface ScanJobResult {
9
9
  report: ScanReport;
10
10
  reportURI: string;
11
+ ipfsHash?: string;
11
12
  }
12
13
 
13
14
  const activeJobs = new Map<string, Promise<ScanJobResult>>();
@@ -77,9 +78,13 @@ async function executeScan(
77
78
 
78
79
  log('Uploading report to Fileverse...');
79
80
  let reportURI: string;
81
+ let ipfsHash: string | undefined;
80
82
  try {
81
- reportURI = await uploadReportToFileverse(report);
83
+ const uploadResult = await uploadReportToFileverse(report);
84
+ reportURI = uploadResult.link;
85
+ ipfsHash = uploadResult.ipfsHash;
82
86
  log(`Report uploaded: ${reportURI}`);
87
+ if (ipfsHash) log(`IPFS content hash: ${ipfsHash}`);
83
88
  } catch (err) {
84
89
  log(`Fileverse upload failed: ${err}`);
85
90
  reportURI = `local://report-${packageName}-${version}`;
@@ -92,5 +97,5 @@ async function executeScan(
92
97
  log(`On-chain report URI: ${err?.shortMessage || err?.message || 'failed'}`);
93
98
  }
94
99
 
95
- return { report, reportURI };
100
+ return { report, reportURI, ipfsHash };
96
101
  }
@@ -3,10 +3,16 @@ import {
3
3
  buildBenchmarkPrompt,
4
4
  evaluateBenchmark,
5
5
  SYSTEM_PROMPT,
6
+ buildBatchSystemPrompt,
7
+ buildBatchBenchmarkPrompt,
8
+ evaluateBatchBenchmark,
9
+ expectedFlagForCase,
6
10
  type BenchmarkCase,
7
11
  type BenchmarkResult,
12
+ type BatchBenchmarkResponse,
13
+ type BatchBenchmarkResult,
8
14
  } from '@opm/core';
9
- import { callLLM } from './openrouter';
15
+ import { callLLM, callLLMRaw } from './openrouter';
10
16
  import {
11
17
  generateCommitment,
12
18
  generateProof,
@@ -32,6 +38,85 @@ export interface BenchmarkRunResult {
32
38
  failureReasons: string[];
33
39
  }
34
40
 
41
+ /** Result type for the fast single-call batch benchmark */
42
+ export interface BatchBenchmarkRunResult {
43
+ candidate: AgentCandidate;
44
+ results: BatchBenchmarkResult[];
45
+ passed: number;
46
+ failed: number;
47
+ total: number;
48
+ accuracyPct: number;
49
+ zkProof: ZKProof;
50
+ verified: boolean;
51
+ }
52
+
53
+ /**
54
+ * Fast single-call benchmark: sends all 10 cases in one prompt,
55
+ * gets back 10 flagged/safe answers, compares to ground truth,
56
+ * generates ZK proof. ~10x faster than runBenchmarkSuite.
57
+ */
58
+ export async function runBatchBenchmarkSuite(
59
+ candidate: AgentCandidate,
60
+ onStatus?: (msg: string) => void,
61
+ ): Promise<BatchBenchmarkRunResult> {
62
+ const log = onStatus || console.log;
63
+ const benchmarks = generateBenchmarkDataset();
64
+
65
+ // Expected verdicts: 1 = flagged, 0 = safe
66
+ const expectedVerdicts = benchmarks.map((b) => expectedFlagForCase(b) ? 1 : 0);
67
+
68
+ log(`Generating commitment for ${benchmarks.length} test cases...`);
69
+ const commitment = generateCommitment(expectedVerdicts);
70
+ log(`Commitment: ${commitment.expectedHash.slice(0, 16)}…`);
71
+
72
+ log(`Sending ${benchmarks.length} cases to ${candidate.model} (single call)...`);
73
+ const userPrompt = buildBatchBenchmarkPrompt(benchmarks);
74
+ // Use the candidate's own system prompt so a bad prompt actually fails the benchmark
75
+ const systemPrompt = buildBatchSystemPrompt(candidate.systemPrompt);
76
+
77
+ const response = await callLLMRaw<BatchBenchmarkResponse>(
78
+ candidate.model,
79
+ systemPrompt,
80
+ userPrompt,
81
+ );
82
+
83
+ if (!response?.answers || !Array.isArray(response.answers)) {
84
+ throw new Error(`Agent returned invalid batch response — expected { answers: [...] }`);
85
+ }
86
+
87
+ log(`Received ${response.answers.length} answers, evaluating...`);
88
+
89
+ const results = evaluateBatchBenchmark(benchmarks, response.answers);
90
+ const actualVerdicts = results.map((r) => r.actualFlagged ? 1 : 0);
91
+
92
+ const passed = results.filter((r) => r.passed).length;
93
+ const failed = results.filter((r) => !r.passed).length;
94
+ const accuracyPct = Math.round((passed / results.length) * 100);
95
+
96
+ results.forEach((r, i) => {
97
+ const icon = r.passed ? '✓' : '✗';
98
+ log(` ${icon} Case ${i + 1} (${r.category}): ${r.actualFlagged ? 'FLAGGED' : 'SAFE'} — expected ${r.expectedFlagged ? 'FLAGGED' : 'SAFE'}`);
99
+ });
100
+
101
+ log(`Accuracy: ${passed}/${results.length} (${accuracyPct}%)`);
102
+ log('Generating ZK proof...');
103
+
104
+ const zkProof = generateProof(commitment, expectedVerdicts, actualVerdicts);
105
+ const verified = verifyProof(zkProof);
106
+ log(`ZK proof ${verified ? 'verified ✓' : 'INVALID ✗'}`);
107
+
108
+ return {
109
+ candidate,
110
+ results,
111
+ passed,
112
+ failed,
113
+ total: results.length,
114
+ accuracyPct,
115
+ zkProof,
116
+ verified,
117
+ };
118
+ }
119
+
35
120
  export async function runBenchmarkSuite(
36
121
  candidate: AgentCandidate,
37
122
  onStatus?: (msg: string) => void,
@@ -11,7 +11,49 @@ function getApiConfig() {
11
11
  return { apiUrl, apiKey };
12
12
  }
13
13
 
14
- export async function uploadReportToFileverse(report: ScanReport): Promise<string> {
14
+ export interface FileverseUploadResult {
15
+ link: string;
16
+ ipfsHash?: string;
17
+ }
18
+
19
+ interface DdocResponse {
20
+ ddocId: string;
21
+ syncStatus: string;
22
+ link?: string;
23
+ contentHash?: string;
24
+ ipfsHash?: string;
25
+ cid?: string;
26
+ ipfsCid?: string;
27
+ [key: string]: unknown;
28
+ }
29
+
30
+ function extractIPFSHash(data: DdocResponse, log?: (msg: string) => void): string | undefined {
31
+ const knownFields = ['contentHash', 'ipfsHash', 'cid', 'ipfsCid', 'hash', 'ipfs', 'contentId'];
32
+ for (const field of knownFields) {
33
+ const val = data[field];
34
+ if (typeof val === 'string' && val.length > 0) return val;
35
+ }
36
+
37
+ for (const [key, val] of Object.entries(data)) {
38
+ if (typeof val === 'string' && (val.startsWith('Qm') || val.startsWith('bafy'))) {
39
+ return val;
40
+ }
41
+ }
42
+
43
+ if (data.link) {
44
+ const ipfsMatch = data.link.match(/\/ipfs\/(Qm[A-Za-z0-9]{44,}|bafy[a-z2-7]{50,})/);
45
+ if (ipfsMatch) return ipfsMatch[1];
46
+ }
47
+
48
+ if (log) {
49
+ const keys = Object.keys(data).filter((k) => !['ddocId', 'syncStatus', 'link'].includes(k));
50
+ if (keys.length > 0) log(`Fileverse extra fields: ${keys.join(', ')}`);
51
+ }
52
+
53
+ return undefined;
54
+ }
55
+
56
+ export async function uploadReportToFileverse(report: ScanReport): Promise<FileverseUploadResult> {
15
57
  const { apiUrl, apiKey } = getApiConfig();
16
58
 
17
59
  const title = `OPM Security Report: ${report.package}@${report.version}`;
@@ -28,16 +70,19 @@ export async function uploadReportToFileverse(report: ScanReport): Promise<strin
28
70
  throw new Error(`Fileverse create failed (${res.status}): ${body}`);
29
71
  }
30
72
 
31
- const { data } = await res.json() as { data: { ddocId: string; syncStatus: string; link?: string } };
73
+ const { data } = await res.json() as { data: DdocResponse };
32
74
  const ddocId = data.ddocId;
75
+ let ipfsHash = extractIPFSHash(data);
33
76
 
34
- if (data.syncStatus === 'synced' && data.link) return data.link;
77
+ if (data.syncStatus === 'synced' && data.link) {
78
+ return { link: data.link, ipfsHash };
79
+ }
35
80
 
36
- const link = await pollForSync(apiUrl, apiKey, ddocId);
37
- return link;
81
+ const syncResult = await pollForSync(apiUrl, apiKey, ddocId);
82
+ return { link: syncResult.link, ipfsHash: ipfsHash || syncResult.ipfsHash };
38
83
  }
39
84
 
40
- async function pollForSync(apiUrl: string, apiKey: string, ddocId: string): Promise<string> {
85
+ async function pollForSync(apiUrl: string, apiKey: string, ddocId: string): Promise<FileverseUploadResult> {
41
86
  const start = Date.now();
42
87
 
43
88
  while (Date.now() - start < POLL_TIMEOUT_MS) {
@@ -46,15 +91,17 @@ async function pollForSync(apiUrl: string, apiKey: string, ddocId: string): Prom
46
91
  const res = await fetch(`${apiUrl}/api/ddocs/${ddocId}?apiKey=${encodeURIComponent(apiKey)}`);
47
92
  if (!res.ok) continue;
48
93
 
49
- const doc = await res.json() as { syncStatus: string; link?: string };
50
- if (doc.syncStatus === 'synced' && doc.link) return doc.link;
94
+ const doc = await res.json() as DdocResponse;
95
+ if (doc.syncStatus === 'synced' && doc.link) {
96
+ return { link: doc.link, ipfsHash: extractIPFSHash(doc) };
97
+ }
51
98
  if (doc.syncStatus === 'failed') throw new Error('Fileverse blockchain sync failed');
52
99
  }
53
100
 
54
- return `https://ddocs.new/pending/${ddocId}`;
101
+ return { link: `https://ddocs.new/pending/${ddocId}` };
55
102
  }
56
103
 
57
- export async function uploadCheckReportToFileverse(report: CheckReport): Promise<string> {
104
+ export async function uploadCheckReportToFileverse(report: CheckReport): Promise<FileverseUploadResult> {
58
105
  const { apiUrl, apiKey } = getApiConfig();
59
106
  const title = `OPM Check Report: ${report.project} (${report.totalDeps} deps)`;
60
107
  const content = formatCheckReportAsMarkdown(report);
@@ -70,8 +117,10 @@ export async function uploadCheckReportToFileverse(report: CheckReport): Promise
70
117
  throw new Error(`Fileverse create failed (${res.status}): ${body}`);
71
118
  }
72
119
 
73
- const { data } = await res.json() as { data: { ddocId: string; syncStatus: string; link?: string } };
74
- if (data.syncStatus === 'synced' && data.link) return data.link;
120
+ const { data } = await res.json() as { data: DdocResponse };
121
+ if (data.syncStatus === 'synced' && data.link) {
122
+ return { link: data.link, ipfsHash: extractIPFSHash(data) };
123
+ }
75
124
  return pollForSync(apiUrl, apiKey, data.ddocId);
76
125
  }
77
126
 
@@ -1 +1 @@
1
- 2XIFCTTKVZwN_RsNE-Rrr
1
+ 0esGzFBCzREfVwijEGDfL
@@ -1,26 +1,15 @@
1
1
  {
2
2
  "pages": {
3
- "/_not-found/page": [
4
- "static/chunks/webpack-e1ae44446e7f7355.js",
5
- "static/chunks/4bd1b696-382748cc942d8a14.js",
6
- "static/chunks/255-0dc49b7a6e8e5c05.js",
7
- "static/chunks/main-app-dd261207182e5a23.js",
8
- "static/chunks/app/_not-found/page-0da542be7eb33a64.js"
9
- ],
10
3
  "/layout": [
11
- "static/chunks/webpack-e1ae44446e7f7355.js",
12
- "static/chunks/4bd1b696-382748cc942d8a14.js",
13
- "static/chunks/255-0dc49b7a6e8e5c05.js",
14
- "static/chunks/main-app-dd261207182e5a23.js",
15
- "static/css/21d69157e271f2ab.css",
16
- "static/chunks/app/layout-28a489fb4398663f.js"
4
+ "static/chunks/webpack.js",
5
+ "static/chunks/main-app.js",
6
+ "static/css/app/layout.css",
7
+ "static/chunks/app/layout.js"
17
8
  ],
18
9
  "/page": [
19
- "static/chunks/webpack-e1ae44446e7f7355.js",
20
- "static/chunks/4bd1b696-382748cc942d8a14.js",
21
- "static/chunks/255-0dc49b7a6e8e5c05.js",
22
- "static/chunks/main-app-dd261207182e5a23.js",
23
- "static/chunks/app/page-e58ccdb78625bce6.js"
10
+ "static/chunks/webpack.js",
11
+ "static/chunks/main-app.js",
12
+ "static/chunks/app/page.js"
24
13
  ]
25
14
  }
26
15
  }
@@ -1,33 +1,20 @@
1
1
  {
2
2
  "polyfillFiles": [
3
- "static/chunks/polyfills-42372ed130431b0a.js"
3
+ "static/chunks/polyfills.js"
4
4
  ],
5
5
  "devFiles": [],
6
6
  "ampDevFiles": [],
7
7
  "lowPriorityFiles": [
8
- "static/2XIFCTTKVZwN_RsNE-Rrr/_buildManifest.js",
9
- "static/2XIFCTTKVZwN_RsNE-Rrr/_ssgManifest.js"
8
+ "static/development/_buildManifest.js",
9
+ "static/development/_ssgManifest.js"
10
10
  ],
11
11
  "rootMainFiles": [
12
- "static/chunks/webpack-e1ae44446e7f7355.js",
13
- "static/chunks/4bd1b696-382748cc942d8a14.js",
14
- "static/chunks/255-0dc49b7a6e8e5c05.js",
15
- "static/chunks/main-app-dd261207182e5a23.js"
12
+ "static/chunks/webpack.js",
13
+ "static/chunks/main-app.js"
16
14
  ],
17
15
  "rootMainFilesTree": {},
18
16
  "pages": {
19
- "/_app": [
20
- "static/chunks/webpack-e1ae44446e7f7355.js",
21
- "static/chunks/framework-ac73abd125e371fe.js",
22
- "static/chunks/main-ee293fa6aa18bdd1.js",
23
- "static/chunks/pages/_app-7d307437aca18ad4.js"
24
- ],
25
- "/_error": [
26
- "static/chunks/webpack-e1ae44446e7f7355.js",
27
- "static/chunks/framework-ac73abd125e371fe.js",
28
- "static/chunks/main-ee293fa6aa18bdd1.js",
29
- "static/chunks/pages/_error-cb2a52f75f2162e2.js"
30
- ]
17
+ "/_app": []
31
18
  },
32
19
  "ampFirstPages": []
33
20
  }
@@ -35,7 +35,7 @@
35
35
  "contentSecurityPolicy": "script-src 'none'; frame-src 'none'; sandbox;",
36
36
  "contentDispositionType": "attachment",
37
37
  "remotePatterns": [],
38
- "unoptimized": false,
38
+ "unoptimized": true,
39
39
  "sizes": [
40
40
  640,
41
41
  750,
@@ -7,7 +7,7 @@
7
7
  "ignoreDuringBuilds": false
8
8
  },
9
9
  "typescript": {
10
- "ignoreBuildErrors": false,
10
+ "ignoreBuildErrors": true,
11
11
  "tsconfigPath": "tsconfig.json"
12
12
  },
13
13
  "typedRoutes": false,
@@ -61,7 +61,7 @@
61
61
  "contentSecurityPolicy": "script-src 'none'; frame-src 'none'; sandbox;",
62
62
  "contentDispositionType": "attachment",
63
63
  "remotePatterns": [],
64
- "unoptimized": false
64
+ "unoptimized": true
65
65
  },
66
66
  "devIndicators": {
67
67
  "position": "bottom-left"
@@ -1,2 +1,2 @@
1
- (()=>{var a={};a.id=492,a.ids=[492],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},1025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},2292:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,1170,23)),Promise.resolve().then(c.t.bind(c,3597,23)),Promise.resolve().then(c.t.bind(c,6893,23)),Promise.resolve().then(c.t.bind(c,9748,23)),Promise.resolve().then(c.t.bind(c,6060,23)),Promise.resolve().then(c.t.bind(c,7184,23)),Promise.resolve().then(c.t.bind(c,9576,23)),Promise.resolve().then(c.t.bind(c,3041,23)),Promise.resolve().then(c.t.bind(c,1384,23))},2704:()=>{},3033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},6439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},6698:()=>{},6713:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/is-bot")},6953:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>f,metadata:()=>e});var d=c(5338);c(2704);let e={title:"OPM | On-chain Package Manager",description:"Cryptographically signed, AI-audited, on-chain verified package security for the npm ecosystem.",icons:{icon:"/favicon.svg"},openGraph:{title:"OPM | On-chain Package Manager",description:"Cryptographically signed, AI-audited, on-chain verified package security.",type:"website"}};function f({children:a}){return(0,d.jsx)("html",{lang:"en",className:"dark",children:(0,d.jsxs)("body",{className:"bg-bg text-accent antialiased",children:[(0,d.jsx)("div",{className:"noise-overlay"}),a]})})}},7156:(a,b,c)=>{"use strict";c.r(b),c.d(b,{GlobalError:()=>D.a,__next_app__:()=>J,handler:()=>L,pages:()=>I,routeModule:()=>K,tree:()=>H});var d=c(9754),e=c(9117),f=c(6595),g=c(2324),h=c(9326),i=c(8928),j=c(175),k=c(12),l=c(4290),m=c(2696),n=c(2802),o=c(7533),p=c(5229),q=c(2822),r=c(261),s=c(6453),t=c(2474),u=c(6713),v=c(1356),w=c(2685),x=c(6225),y=c(3446),z=c(2762),A=c(5742),B=c(6439),C=c(1170),D=c.n(C),E=c(2506),F=c(1203),G={};for(let a in E)0>["default","tree","pages","GlobalError","__next_app__","routeModule","handler"].indexOf(a)&&(G[a]=()=>E[a]);c.d(b,G);let H={children:["",{children:["/_not-found",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(c.t.bind(c,7028,23)),"next/dist/client/components/builtin/not-found.js"]}]},{}]},{layout:[()=>Promise.resolve().then(c.bind(c,6953)),"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/layout.tsx"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,1170,23)),"next/dist/client/components/builtin/global-error.js"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,461,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,2768,23)),"next/dist/client/components/builtin/unauthorized.js"]}]}.children,I=[],J={require:c,loadChunk:()=>Promise.resolve()},K=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/_not-found/page",pathname:"/_not-found",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:H},distDir:".next",relativeProjectDir:""});async function L(a,b,d){var C;let G="/_not-found/page";"/index"===G&&(G="/");let M=(0,h.getRequestMeta)(a,"postponed"),N=(0,h.getRequestMeta)(a,"minimalMode"),O=await K.prepare(a,b,{srcPage:G,multiZoneDraftMode:!1});if(!O)return b.statusCode=400,b.end("Bad Request"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let{buildId:P,query:Q,params:R,parsedUrl:S,pageIsDynamic:T,buildManifest:U,nextFontManifest:V,reactLoadableManifest:W,serverActionsManifest:X,clientReferenceManifest:Y,subresourceIntegrityManifest:Z,prerenderManifest:$,isDraftMode:_,resolvedPathname:aa,revalidateOnlyGenerated:ab,routerServerContext:ac,nextConfig:ad,interceptionRoutePatterns:ae}=O,af=S.pathname||"/",ag=(0,r.normalizeAppPath)(G),{isOnDemandRevalidate:ah}=O,ai=K.match(af,$),aj=!!$.routes[aa],ak=!!(ai||aj||$.routes[ag]),al=a.headers["user-agent"]||"",am=(0,u.getBotType)(al),an=(0,p.isHtmlBotRequest)(a),ao=(0,h.getRequestMeta)(a,"isPrefetchRSCRequest")??"1"===a.headers[t.NEXT_ROUTER_PREFETCH_HEADER],ap=(0,h.getRequestMeta)(a,"isRSCRequest")??!!a.headers[t.RSC_HEADER],aq=(0,s.getIsPossibleServerAction)(a),ar=(0,m.checkIsAppPPREnabled)(ad.experimental.ppr)&&(null==(C=$.routes[ag]??$.dynamicRoutes[ag])?void 0:C.renderingMode)==="PARTIALLY_STATIC",as=!1,at=!1,au=ar?M:void 0,av=ar&&ap&&!ao,aw=(0,h.getRequestMeta)(a,"segmentPrefetchRSCRequest"),ax=!al||(0,p.shouldServeStreamingMetadata)(al,ad.htmlLimitedBots);an&&ar&&(ak=!1,ax=!1);let ay=!0===K.isDev||!ak||"string"==typeof M||av,az=an&&ar,aA=null;_||!ak||ay||aq||au||av||(aA=aa);let aB=aA;!aB&&K.isDev&&(aB=aa),K.isDev||_||!ak||!ap||av||(0,k.d)(a.headers);let aC={...E,tree:H,pages:I,GlobalError:D(),handler:L,routeModule:K,__next_app__:J};X&&Y&&(0,o.setReferenceManifestsSingleton)({page:G,clientReferenceManifest:Y,serverActionsManifest:X,serverModuleMap:(0,q.createServerModuleMap)({serverActionsManifest:X})});let aD=a.method||"GET",aE=(0,g.getTracer)(),aF=aE.getActiveScopeSpan();try{let f=K.getVaryHeader(aa,ae);b.setHeader("Vary",f);let k=async(c,d)=>{let e=new l.NodeNextRequest(a),f=new l.NodeNextResponse(b);return K.render(e,f,d).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let d=aE.getRootSpanAttributes();if(!d)return;if(d.get("next.span_type")!==i.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${d.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=d.get("next.route");if(e){let a=`${aD} ${e}`;c.setAttributes({"next.route":e,"http.route":e,"next.span_name":a}),c.updateName(a)}else c.updateName(`${aD} ${a.url}`)})},m=async({span:e,postponed:f,fallbackRouteParams:g})=>{let i={query:Q,params:R,page:ag,sharedContext:{buildId:P},serverComponentsHmrCache:(0,h.getRequestMeta)(a,"serverComponentsHmrCache"),fallbackRouteParams:g,renderOpts:{App:()=>null,Document:()=>null,pageConfig:{},ComponentMod:aC,Component:(0,j.T)(aC),params:R,routeModule:K,page:G,postponed:f,shouldWaitOnAllReady:az,serveStreamingMetadata:ax,supportsDynamicResponse:"string"==typeof f||ay,buildManifest:U,nextFontManifest:V,reactLoadableManifest:W,subresourceIntegrityManifest:Z,serverActionsManifest:X,clientReferenceManifest:Y,setIsrStatus:null==ac?void 0:ac.setIsrStatus,dir:c(9902).join(process.cwd(),K.relativeProjectDir),isDraftMode:_,isRevalidate:ak&&!f&&!av,botType:am,isOnDemandRevalidate:ah,isPossibleServerAction:aq,assetPrefix:ad.assetPrefix,nextConfigOutput:ad.output,crossOrigin:ad.crossOrigin,trailingSlash:ad.trailingSlash,previewProps:$.preview,deploymentId:ad.deploymentId,enableTainting:ad.experimental.taint,htmlLimitedBots:ad.htmlLimitedBots,devtoolSegmentExplorer:ad.experimental.devtoolSegmentExplorer,reactMaxHeadersLength:ad.reactMaxHeadersLength,multiZoneDraftMode:!1,incrementalCache:(0,h.getRequestMeta)(a,"incrementalCache"),cacheLifeProfiles:ad.experimental.cacheLife,basePath:ad.basePath,serverActions:ad.experimental.serverActions,...as?{nextExport:!0,supportsDynamicResponse:!1,isStaticGeneration:!0,isRevalidate:!0,isDebugDynamicAccesses:as}:{},experimental:{isRoutePPREnabled:ar,expireTime:ad.expireTime,staleTimes:ad.experimental.staleTimes,cacheComponents:!!ad.experimental.cacheComponents,clientSegmentCache:!!ad.experimental.clientSegmentCache,clientParamParsing:!!ad.experimental.clientParamParsing,dynamicOnHover:!!ad.experimental.dynamicOnHover,inlineCss:!!ad.experimental.inlineCss,authInterrupts:!!ad.experimental.authInterrupts,clientTraceMetadata:ad.experimental.clientTraceMetadata||[]},waitUntil:d.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:()=>{},onInstrumentationRequestError:(b,c,d)=>K.onRequestError(a,b,d,ac),err:(0,h.getRequestMeta)(a,"invokeError"),dev:K.isDev}},l=await k(e,i),{metadata:m}=l,{cacheControl:n,headers:o={},fetchTags:p}=m;if(p&&(o[y.NEXT_CACHE_TAGS_HEADER]=p),a.fetchMetrics=m.fetchMetrics,ak&&(null==n?void 0:n.revalidate)===0&&!K.isDev&&!ar){let a=m.staticBailoutInfo,b=Object.defineProperty(Error(`Page changed from static to dynamic at runtime ${aa}${(null==a?void 0:a.description)?`, reason: ${a.description}`:""}
2
- see more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`),"__NEXT_ERROR_CODE",{value:"E132",enumerable:!1,configurable:!0});if(null==a?void 0:a.stack){let c=a.stack;b.stack=b.message+c.substring(c.indexOf("\n"))}throw b}return{value:{kind:v.CachedRouteKind.APP_PAGE,html:l,headers:o,rscData:m.flightData,postponed:m.postponed,status:m.statusCode,segmentData:m.segmentData},cacheControl:n}},o=async({hasResolved:c,previousCacheEntry:f,isRevalidating:g,span:i})=>{let j,k=!1===K.isDev,l=c||b.writableEnded;if(ah&&ab&&!f&&!N)return(null==ac?void 0:ac.render404)?await ac.render404(a,b):(b.statusCode=404,b.end("This page could not be found")),null;if(ai&&(j=(0,w.parseFallbackField)(ai.fallback)),j===w.FallbackMode.PRERENDER&&(0,u.isBot)(al)&&(!ar||an)&&(j=w.FallbackMode.BLOCKING_STATIC_RENDER),(null==f?void 0:f.isStale)===-1&&(ah=!0),ah&&(j!==w.FallbackMode.NOT_FOUND||f)&&(j=w.FallbackMode.BLOCKING_STATIC_RENDER),!N&&j!==w.FallbackMode.BLOCKING_STATIC_RENDER&&aB&&!l&&!_&&T&&(k||!aj)){let b;if((k||ai)&&j===w.FallbackMode.NOT_FOUND)throw new B.NoFallbackError;if(ar&&!ap){let c="string"==typeof(null==ai?void 0:ai.fallback)?ai.fallback:k?ag:null;if(b=await K.handleResponse({cacheKey:c,req:a,nextConfig:ad,routeKind:e.RouteKind.APP_PAGE,isFallback:!0,prerenderManifest:$,isRoutePPREnabled:ar,responseGenerator:async()=>m({span:i,postponed:void 0,fallbackRouteParams:k||at?(0,n.u)(ag):null}),waitUntil:d.waitUntil}),null===b)return null;if(b)return delete b.cacheControl,b}}let o=ah||g||!au?void 0:au;if(as&&void 0!==o)return{cacheControl:{revalidate:1,expire:void 0},value:{kind:v.CachedRouteKind.PAGES,html:x.default.EMPTY,pageData:{},headers:void 0,status:void 0}};let p=T&&ar&&((0,h.getRequestMeta)(a,"renderFallbackShell")||at)?(0,n.u)(af):null;return m({span:i,postponed:o,fallbackRouteParams:p})},p=async c=>{var f,g,i,j,k;let l,n=await K.handleResponse({cacheKey:aA,responseGenerator:a=>o({span:c,...a}),routeKind:e.RouteKind.APP_PAGE,isOnDemandRevalidate:ah,isRoutePPREnabled:ar,req:a,nextConfig:ad,prerenderManifest:$,waitUntil:d.waitUntil});if(_&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate"),K.isDev&&b.setHeader("Cache-Control","no-store, must-revalidate"),!n){if(aA)throw Object.defineProperty(Error("invariant: cache entry required but not generated"),"__NEXT_ERROR_CODE",{value:"E62",enumerable:!1,configurable:!0});return null}if((null==(f=n.value)?void 0:f.kind)!==v.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant app-page handler received invalid cache entry ${null==(i=n.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E707",enumerable:!1,configurable:!0});let p="string"==typeof n.value.postponed;ak&&!av&&(!p||ao)&&(N||b.setHeader("x-nextjs-cache",ah?"REVALIDATED":n.isMiss?"MISS":n.isStale?"STALE":"HIT"),b.setHeader(t.NEXT_IS_PRERENDER_HEADER,"1"));let{value:q}=n;if(au)l={revalidate:0,expire:void 0};else if(N&&ap&&!ao&&ar)l={revalidate:0,expire:void 0};else if(!K.isDev)if(_)l={revalidate:0,expire:void 0};else if(ak){if(n.cacheControl)if("number"==typeof n.cacheControl.revalidate){if(n.cacheControl.revalidate<1)throw Object.defineProperty(Error(`Invalid revalidate configuration provided: ${n.cacheControl.revalidate} < 1`),"__NEXT_ERROR_CODE",{value:"E22",enumerable:!1,configurable:!0});l={revalidate:n.cacheControl.revalidate,expire:(null==(j=n.cacheControl)?void 0:j.expire)??ad.expireTime}}else l={revalidate:y.CACHE_ONE_YEAR,expire:void 0}}else b.getHeader("Cache-Control")||(l={revalidate:0,expire:void 0});if(n.cacheControl=l,"string"==typeof aw&&(null==q?void 0:q.kind)===v.CachedRouteKind.APP_PAGE&&q.segmentData){b.setHeader(t.NEXT_DID_POSTPONE_HEADER,"2");let c=null==(k=q.headers)?void 0:k[y.NEXT_CACHE_TAGS_HEADER];N&&ak&&c&&"string"==typeof c&&b.setHeader(y.NEXT_CACHE_TAGS_HEADER,c);let d=q.segmentData.get(aw);return void 0!==d?(0,A.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:x.default.fromStatic(d,t.RSC_CONTENT_TYPE_HEADER),cacheControl:n.cacheControl}):(b.statusCode=204,(0,A.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:x.default.EMPTY,cacheControl:n.cacheControl}))}let r=(0,h.getRequestMeta)(a,"onCacheEntry");if(r&&await r({...n,value:{...n.value,kind:"PAGE"}},{url:(0,h.getRequestMeta)(a,"initURL")}))return null;if(p&&au)throw Object.defineProperty(Error("Invariant: postponed state should not be present on a resume request"),"__NEXT_ERROR_CODE",{value:"E396",enumerable:!1,configurable:!0});if(q.headers){let a={...q.headers};for(let[c,d]of(N&&ak||delete a[y.NEXT_CACHE_TAGS_HEADER],Object.entries(a)))if(void 0!==d)if(Array.isArray(d))for(let a of d)b.appendHeader(c,a);else"number"==typeof d&&(d=d.toString()),b.appendHeader(c,d)}let s=null==(g=q.headers)?void 0:g[y.NEXT_CACHE_TAGS_HEADER];if(N&&ak&&s&&"string"==typeof s&&b.setHeader(y.NEXT_CACHE_TAGS_HEADER,s),!q.status||ap&&ar||(b.statusCode=q.status),!N&&q.status&&F.RedirectStatusCode[q.status]&&ap&&(b.statusCode=200),p&&b.setHeader(t.NEXT_DID_POSTPONE_HEADER,"1"),ap&&!_){if(void 0===q.rscData){if(q.postponed)throw Object.defineProperty(Error("Invariant: Expected postponed to be undefined"),"__NEXT_ERROR_CODE",{value:"E372",enumerable:!1,configurable:!0});return(0,A.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:q.html,cacheControl:av?{revalidate:0,expire:void 0}:n.cacheControl})}return(0,A.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:x.default.fromStatic(q.rscData,t.RSC_CONTENT_TYPE_HEADER),cacheControl:n.cacheControl})}let u=q.html;if(!p||N||ap)return(0,A.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:u,cacheControl:n.cacheControl});if(as)return u.push(new ReadableStream({start(a){a.enqueue(z.ENCODED_TAGS.CLOSED.BODY_AND_HTML),a.close()}})),(0,A.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:u,cacheControl:{revalidate:0,expire:void 0}});let w=new TransformStream;return u.push(w.readable),m({span:c,postponed:q.postponed,fallbackRouteParams:null}).then(async a=>{var b,c;if(!a)throw Object.defineProperty(Error("Invariant: expected a result to be returned"),"__NEXT_ERROR_CODE",{value:"E463",enumerable:!1,configurable:!0});if((null==(b=a.value)?void 0:b.kind)!==v.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant: expected a page response, got ${null==(c=a.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E305",enumerable:!1,configurable:!0});await a.value.html.pipeTo(w.writable)}).catch(a=>{w.writable.abort(a).catch(a=>{console.error("couldn't abort transformer",a)})}),(0,A.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:u,cacheControl:{revalidate:0,expire:void 0}})};if(!aF)return await aE.withPropagatedContext(a.headers,()=>aE.trace(i.BaseServerSpan.handleRequest,{spanName:`${aD} ${a.url}`,kind:g.SpanKind.SERVER,attributes:{"http.method":aD,"http.target":a.url}},p));await p(aF)}catch(b){throw b instanceof B.NoFallbackError||await K.onRequestError(a,b,{routerKind:"App Router",routePath:G,routeType:"render",revalidateReason:(0,f.c)({isRevalidate:ak,isOnDemandRevalidate:ah})},ac),b}}},8354:a=>{"use strict";a.exports=require("util")},8676:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,4160,23)),Promise.resolve().then(c.t.bind(c,1603,23)),Promise.resolve().then(c.t.bind(c,8495,23)),Promise.resolve().then(c.t.bind(c,5170,23)),Promise.resolve().then(c.t.bind(c,7526,23)),Promise.resolve().then(c.t.bind(c,8922,23)),Promise.resolve().then(c.t.bind(c,9234,23)),Promise.resolve().then(c.t.bind(c,2263,23)),Promise.resolve().then(c.bind(c,2146))},9121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},9294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},9842:()=>{},9902:a=>{"use strict";a.exports=require("path")}};var b=require("../../webpack-runtime.js");b.C(a);var c=b.X(0,[778],()=>b(b.s=7156));module.exports=c})();
1
+ (()=>{var a={};a.id=492,a.ids=[492],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},1025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},2292:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,1170,23)),Promise.resolve().then(c.t.bind(c,3597,23)),Promise.resolve().then(c.t.bind(c,6893,23)),Promise.resolve().then(c.t.bind(c,9748,23)),Promise.resolve().then(c.t.bind(c,6060,23)),Promise.resolve().then(c.t.bind(c,7184,23)),Promise.resolve().then(c.t.bind(c,9576,23)),Promise.resolve().then(c.t.bind(c,3041,23)),Promise.resolve().then(c.t.bind(c,1384,23))},2511:()=>{},2704:()=>{},3033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},6439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},6713:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/is-bot")},6953:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>f,metadata:()=>e});var d=c(5338);c(2704);let e={title:"OPM | On-chain Package Manager",description:"Cryptographically signed, AI-audited, on-chain verified package security for the npm ecosystem.",icons:{icon:"/favicon.svg"},openGraph:{title:"OPM | On-chain Package Manager",description:"Cryptographically signed, AI-audited, on-chain verified package security.",type:"website"}};function f({children:a}){return(0,d.jsx)("html",{lang:"en",children:(0,d.jsx)("body",{className:"font-sans antialiased",children:a})})}},7156:(a,b,c)=>{"use strict";c.r(b),c.d(b,{GlobalError:()=>D.a,__next_app__:()=>J,handler:()=>L,pages:()=>I,routeModule:()=>K,tree:()=>H});var d=c(9754),e=c(9117),f=c(6595),g=c(2324),h=c(9326),i=c(8928),j=c(175),k=c(12),l=c(4290),m=c(2696),n=c(2802),o=c(7533),p=c(5229),q=c(2822),r=c(261),s=c(6453),t=c(2474),u=c(6713),v=c(1356),w=c(2685),x=c(6225),y=c(3446),z=c(2762),A=c(5742),B=c(6439),C=c(1170),D=c.n(C),E=c(2506),F=c(1203),G={};for(let a in E)0>["default","tree","pages","GlobalError","__next_app__","routeModule","handler"].indexOf(a)&&(G[a]=()=>E[a]);c.d(b,G);let H={children:["",{children:["/_not-found",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(c.t.bind(c,7028,23)),"next/dist/client/components/builtin/not-found.js"]}]},{}]},{layout:[()=>Promise.resolve().then(c.bind(c,6953)),"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/layout.tsx"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,1170,23)),"next/dist/client/components/builtin/global-error.js"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,461,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,2768,23)),"next/dist/client/components/builtin/unauthorized.js"]}]}.children,I=[],J={require:c,loadChunk:()=>Promise.resolve()},K=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/_not-found/page",pathname:"/_not-found",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:H},distDir:".next",relativeProjectDir:""});async function L(a,b,d){var C;let G="/_not-found/page";"/index"===G&&(G="/");let M=(0,h.getRequestMeta)(a,"postponed"),N=(0,h.getRequestMeta)(a,"minimalMode"),O=await K.prepare(a,b,{srcPage:G,multiZoneDraftMode:!1});if(!O)return b.statusCode=400,b.end("Bad Request"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let{buildId:P,query:Q,params:R,parsedUrl:S,pageIsDynamic:T,buildManifest:U,nextFontManifest:V,reactLoadableManifest:W,serverActionsManifest:X,clientReferenceManifest:Y,subresourceIntegrityManifest:Z,prerenderManifest:$,isDraftMode:_,resolvedPathname:aa,revalidateOnlyGenerated:ab,routerServerContext:ac,nextConfig:ad,interceptionRoutePatterns:ae}=O,af=S.pathname||"/",ag=(0,r.normalizeAppPath)(G),{isOnDemandRevalidate:ah}=O,ai=K.match(af,$),aj=!!$.routes[aa],ak=!!(ai||aj||$.routes[ag]),al=a.headers["user-agent"]||"",am=(0,u.getBotType)(al),an=(0,p.isHtmlBotRequest)(a),ao=(0,h.getRequestMeta)(a,"isPrefetchRSCRequest")??"1"===a.headers[t.NEXT_ROUTER_PREFETCH_HEADER],ap=(0,h.getRequestMeta)(a,"isRSCRequest")??!!a.headers[t.RSC_HEADER],aq=(0,s.getIsPossibleServerAction)(a),ar=(0,m.checkIsAppPPREnabled)(ad.experimental.ppr)&&(null==(C=$.routes[ag]??$.dynamicRoutes[ag])?void 0:C.renderingMode)==="PARTIALLY_STATIC",as=!1,at=!1,au=ar?M:void 0,av=ar&&ap&&!ao,aw=(0,h.getRequestMeta)(a,"segmentPrefetchRSCRequest"),ax=!al||(0,p.shouldServeStreamingMetadata)(al,ad.htmlLimitedBots);an&&ar&&(ak=!1,ax=!1);let ay=!0===K.isDev||!ak||"string"==typeof M||av,az=an&&ar,aA=null;_||!ak||ay||aq||au||av||(aA=aa);let aB=aA;!aB&&K.isDev&&(aB=aa),K.isDev||_||!ak||!ap||av||(0,k.d)(a.headers);let aC={...E,tree:H,pages:I,GlobalError:D(),handler:L,routeModule:K,__next_app__:J};X&&Y&&(0,o.setReferenceManifestsSingleton)({page:G,clientReferenceManifest:Y,serverActionsManifest:X,serverModuleMap:(0,q.createServerModuleMap)({serverActionsManifest:X})});let aD=a.method||"GET",aE=(0,g.getTracer)(),aF=aE.getActiveScopeSpan();try{let f=K.getVaryHeader(aa,ae);b.setHeader("Vary",f);let k=async(c,d)=>{let e=new l.NodeNextRequest(a),f=new l.NodeNextResponse(b);return K.render(e,f,d).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let d=aE.getRootSpanAttributes();if(!d)return;if(d.get("next.span_type")!==i.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${d.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=d.get("next.route");if(e){let a=`${aD} ${e}`;c.setAttributes({"next.route":e,"http.route":e,"next.span_name":a}),c.updateName(a)}else c.updateName(`${aD} ${a.url}`)})},m=async({span:e,postponed:f,fallbackRouteParams:g})=>{let i={query:Q,params:R,page:ag,sharedContext:{buildId:P},serverComponentsHmrCache:(0,h.getRequestMeta)(a,"serverComponentsHmrCache"),fallbackRouteParams:g,renderOpts:{App:()=>null,Document:()=>null,pageConfig:{},ComponentMod:aC,Component:(0,j.T)(aC),params:R,routeModule:K,page:G,postponed:f,shouldWaitOnAllReady:az,serveStreamingMetadata:ax,supportsDynamicResponse:"string"==typeof f||ay,buildManifest:U,nextFontManifest:V,reactLoadableManifest:W,subresourceIntegrityManifest:Z,serverActionsManifest:X,clientReferenceManifest:Y,setIsrStatus:null==ac?void 0:ac.setIsrStatus,dir:c(9902).join(process.cwd(),K.relativeProjectDir),isDraftMode:_,isRevalidate:ak&&!f&&!av,botType:am,isOnDemandRevalidate:ah,isPossibleServerAction:aq,assetPrefix:ad.assetPrefix,nextConfigOutput:ad.output,crossOrigin:ad.crossOrigin,trailingSlash:ad.trailingSlash,previewProps:$.preview,deploymentId:ad.deploymentId,enableTainting:ad.experimental.taint,htmlLimitedBots:ad.htmlLimitedBots,devtoolSegmentExplorer:ad.experimental.devtoolSegmentExplorer,reactMaxHeadersLength:ad.reactMaxHeadersLength,multiZoneDraftMode:!1,incrementalCache:(0,h.getRequestMeta)(a,"incrementalCache"),cacheLifeProfiles:ad.experimental.cacheLife,basePath:ad.basePath,serverActions:ad.experimental.serverActions,...as?{nextExport:!0,supportsDynamicResponse:!1,isStaticGeneration:!0,isRevalidate:!0,isDebugDynamicAccesses:as}:{},experimental:{isRoutePPREnabled:ar,expireTime:ad.expireTime,staleTimes:ad.experimental.staleTimes,cacheComponents:!!ad.experimental.cacheComponents,clientSegmentCache:!!ad.experimental.clientSegmentCache,clientParamParsing:!!ad.experimental.clientParamParsing,dynamicOnHover:!!ad.experimental.dynamicOnHover,inlineCss:!!ad.experimental.inlineCss,authInterrupts:!!ad.experimental.authInterrupts,clientTraceMetadata:ad.experimental.clientTraceMetadata||[]},waitUntil:d.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:()=>{},onInstrumentationRequestError:(b,c,d)=>K.onRequestError(a,b,d,ac),err:(0,h.getRequestMeta)(a,"invokeError"),dev:K.isDev}},l=await k(e,i),{metadata:m}=l,{cacheControl:n,headers:o={},fetchTags:p}=m;if(p&&(o[y.NEXT_CACHE_TAGS_HEADER]=p),a.fetchMetrics=m.fetchMetrics,ak&&(null==n?void 0:n.revalidate)===0&&!K.isDev&&!ar){let a=m.staticBailoutInfo,b=Object.defineProperty(Error(`Page changed from static to dynamic at runtime ${aa}${(null==a?void 0:a.description)?`, reason: ${a.description}`:""}
2
+ see more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`),"__NEXT_ERROR_CODE",{value:"E132",enumerable:!1,configurable:!0});if(null==a?void 0:a.stack){let c=a.stack;b.stack=b.message+c.substring(c.indexOf("\n"))}throw b}return{value:{kind:v.CachedRouteKind.APP_PAGE,html:l,headers:o,rscData:m.flightData,postponed:m.postponed,status:m.statusCode,segmentData:m.segmentData},cacheControl:n}},o=async({hasResolved:c,previousCacheEntry:f,isRevalidating:g,span:i})=>{let j,k=!1===K.isDev,l=c||b.writableEnded;if(ah&&ab&&!f&&!N)return(null==ac?void 0:ac.render404)?await ac.render404(a,b):(b.statusCode=404,b.end("This page could not be found")),null;if(ai&&(j=(0,w.parseFallbackField)(ai.fallback)),j===w.FallbackMode.PRERENDER&&(0,u.isBot)(al)&&(!ar||an)&&(j=w.FallbackMode.BLOCKING_STATIC_RENDER),(null==f?void 0:f.isStale)===-1&&(ah=!0),ah&&(j!==w.FallbackMode.NOT_FOUND||f)&&(j=w.FallbackMode.BLOCKING_STATIC_RENDER),!N&&j!==w.FallbackMode.BLOCKING_STATIC_RENDER&&aB&&!l&&!_&&T&&(k||!aj)){let b;if((k||ai)&&j===w.FallbackMode.NOT_FOUND)throw new B.NoFallbackError;if(ar&&!ap){let c="string"==typeof(null==ai?void 0:ai.fallback)?ai.fallback:k?ag:null;if(b=await K.handleResponse({cacheKey:c,req:a,nextConfig:ad,routeKind:e.RouteKind.APP_PAGE,isFallback:!0,prerenderManifest:$,isRoutePPREnabled:ar,responseGenerator:async()=>m({span:i,postponed:void 0,fallbackRouteParams:k||at?(0,n.u)(ag):null}),waitUntil:d.waitUntil}),null===b)return null;if(b)return delete b.cacheControl,b}}let o=ah||g||!au?void 0:au;if(as&&void 0!==o)return{cacheControl:{revalidate:1,expire:void 0},value:{kind:v.CachedRouteKind.PAGES,html:x.default.EMPTY,pageData:{},headers:void 0,status:void 0}};let p=T&&ar&&((0,h.getRequestMeta)(a,"renderFallbackShell")||at)?(0,n.u)(af):null;return m({span:i,postponed:o,fallbackRouteParams:p})},p=async c=>{var f,g,i,j,k;let l,n=await K.handleResponse({cacheKey:aA,responseGenerator:a=>o({span:c,...a}),routeKind:e.RouteKind.APP_PAGE,isOnDemandRevalidate:ah,isRoutePPREnabled:ar,req:a,nextConfig:ad,prerenderManifest:$,waitUntil:d.waitUntil});if(_&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate"),K.isDev&&b.setHeader("Cache-Control","no-store, must-revalidate"),!n){if(aA)throw Object.defineProperty(Error("invariant: cache entry required but not generated"),"__NEXT_ERROR_CODE",{value:"E62",enumerable:!1,configurable:!0});return null}if((null==(f=n.value)?void 0:f.kind)!==v.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant app-page handler received invalid cache entry ${null==(i=n.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E707",enumerable:!1,configurable:!0});let p="string"==typeof n.value.postponed;ak&&!av&&(!p||ao)&&(N||b.setHeader("x-nextjs-cache",ah?"REVALIDATED":n.isMiss?"MISS":n.isStale?"STALE":"HIT"),b.setHeader(t.NEXT_IS_PRERENDER_HEADER,"1"));let{value:q}=n;if(au)l={revalidate:0,expire:void 0};else if(N&&ap&&!ao&&ar)l={revalidate:0,expire:void 0};else if(!K.isDev)if(_)l={revalidate:0,expire:void 0};else if(ak){if(n.cacheControl)if("number"==typeof n.cacheControl.revalidate){if(n.cacheControl.revalidate<1)throw Object.defineProperty(Error(`Invalid revalidate configuration provided: ${n.cacheControl.revalidate} < 1`),"__NEXT_ERROR_CODE",{value:"E22",enumerable:!1,configurable:!0});l={revalidate:n.cacheControl.revalidate,expire:(null==(j=n.cacheControl)?void 0:j.expire)??ad.expireTime}}else l={revalidate:y.CACHE_ONE_YEAR,expire:void 0}}else b.getHeader("Cache-Control")||(l={revalidate:0,expire:void 0});if(n.cacheControl=l,"string"==typeof aw&&(null==q?void 0:q.kind)===v.CachedRouteKind.APP_PAGE&&q.segmentData){b.setHeader(t.NEXT_DID_POSTPONE_HEADER,"2");let c=null==(k=q.headers)?void 0:k[y.NEXT_CACHE_TAGS_HEADER];N&&ak&&c&&"string"==typeof c&&b.setHeader(y.NEXT_CACHE_TAGS_HEADER,c);let d=q.segmentData.get(aw);return void 0!==d?(0,A.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:x.default.fromStatic(d,t.RSC_CONTENT_TYPE_HEADER),cacheControl:n.cacheControl}):(b.statusCode=204,(0,A.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:x.default.EMPTY,cacheControl:n.cacheControl}))}let r=(0,h.getRequestMeta)(a,"onCacheEntry");if(r&&await r({...n,value:{...n.value,kind:"PAGE"}},{url:(0,h.getRequestMeta)(a,"initURL")}))return null;if(p&&au)throw Object.defineProperty(Error("Invariant: postponed state should not be present on a resume request"),"__NEXT_ERROR_CODE",{value:"E396",enumerable:!1,configurable:!0});if(q.headers){let a={...q.headers};for(let[c,d]of(N&&ak||delete a[y.NEXT_CACHE_TAGS_HEADER],Object.entries(a)))if(void 0!==d)if(Array.isArray(d))for(let a of d)b.appendHeader(c,a);else"number"==typeof d&&(d=d.toString()),b.appendHeader(c,d)}let s=null==(g=q.headers)?void 0:g[y.NEXT_CACHE_TAGS_HEADER];if(N&&ak&&s&&"string"==typeof s&&b.setHeader(y.NEXT_CACHE_TAGS_HEADER,s),!q.status||ap&&ar||(b.statusCode=q.status),!N&&q.status&&F.RedirectStatusCode[q.status]&&ap&&(b.statusCode=200),p&&b.setHeader(t.NEXT_DID_POSTPONE_HEADER,"1"),ap&&!_){if(void 0===q.rscData){if(q.postponed)throw Object.defineProperty(Error("Invariant: Expected postponed to be undefined"),"__NEXT_ERROR_CODE",{value:"E372",enumerable:!1,configurable:!0});return(0,A.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:q.html,cacheControl:av?{revalidate:0,expire:void 0}:n.cacheControl})}return(0,A.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:x.default.fromStatic(q.rscData,t.RSC_CONTENT_TYPE_HEADER),cacheControl:n.cacheControl})}let u=q.html;if(!p||N||ap)return(0,A.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:u,cacheControl:n.cacheControl});if(as)return u.push(new ReadableStream({start(a){a.enqueue(z.ENCODED_TAGS.CLOSED.BODY_AND_HTML),a.close()}})),(0,A.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:u,cacheControl:{revalidate:0,expire:void 0}});let w=new TransformStream;return u.push(w.readable),m({span:c,postponed:q.postponed,fallbackRouteParams:null}).then(async a=>{var b,c;if(!a)throw Object.defineProperty(Error("Invariant: expected a result to be returned"),"__NEXT_ERROR_CODE",{value:"E463",enumerable:!1,configurable:!0});if((null==(b=a.value)?void 0:b.kind)!==v.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant: expected a page response, got ${null==(c=a.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E305",enumerable:!1,configurable:!0});await a.value.html.pipeTo(w.writable)}).catch(a=>{w.writable.abort(a).catch(a=>{console.error("couldn't abort transformer",a)})}),(0,A.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:u,cacheControl:{revalidate:0,expire:void 0}})};if(!aF)return await aE.withPropagatedContext(a.headers,()=>aE.trace(i.BaseServerSpan.handleRequest,{spanName:`${aD} ${a.url}`,kind:g.SpanKind.SERVER,attributes:{"http.method":aD,"http.target":a.url}},p));await p(aF)}catch(b){throw b instanceof B.NoFallbackError||await K.onRequestError(a,b,{routerKind:"App Router",routePath:G,routeType:"render",revalidateReason:(0,f.c)({isRevalidate:ak,isOnDemandRevalidate:ah})},ac),b}}},8354:a=>{"use strict";a.exports=require("util")},8676:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,4160,23)),Promise.resolve().then(c.t.bind(c,1603,23)),Promise.resolve().then(c.t.bind(c,8495,23)),Promise.resolve().then(c.t.bind(c,5170,23)),Promise.resolve().then(c.t.bind(c,7526,23)),Promise.resolve().then(c.t.bind(c,8922,23)),Promise.resolve().then(c.t.bind(c,9234,23)),Promise.resolve().then(c.t.bind(c,2263,23)),Promise.resolve().then(c.bind(c,2146))},9121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},9294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},9463:()=>{},9902:a=>{"use strict";a.exports=require("path")}};var b=require("../../webpack-runtime.js");b.C(a);var c=b.X(0,[778],()=>b(b.s=7156));module.exports=c})();
@@ -1 +1 @@
1
- globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/_not-found/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"622":{"*":{"id":"2146","name":"*","chunks":[],"async":false}},"1959":{"*":{"id":"1603","name":"*","chunks":[],"async":false}},"3886":{"*":{"id":"5170","name":"*","chunks":[],"async":false}},"4431":{"*":{"id":"2263","name":"*","chunks":[],"async":false}},"5278":{"*":{"id":"8922","name":"*","chunks":[],"async":false}},"7150":{"*":{"id":"4160","name":"*","chunks":[],"async":false}},"7322":{"*":{"id":"9992","name":"*","chunks":[],"async":false}},"7989":{"*":{"id":"8495","name":"*","chunks":[],"async":false}},"8924":{"*":{"id":"9234","name":"*","chunks":[],"async":false}},"9766":{"*":{"id":"7526","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/dhananjaypai/Coding/Personal/opm/packages/web/node_modules/next/dist/client/components/builtin/global-error.js":{"id":7150,"name":"*","chunks":[],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":7150,"name":"*","chunks":[],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/node_modules/next/dist/client/components/client-page.js":{"id":1959,"name":"*","chunks":[],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/node_modules/next/dist/esm/client/components/client-page.js":{"id":1959,"name":"*","chunks":[],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/node_modules/next/dist/client/components/client-segment.js":{"id":7989,"name":"*","chunks":[],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/node_modules/next/dist/esm/client/components/client-segment.js":{"id":7989,"name":"*","chunks":[],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":3886,"name":"*","chunks":[],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":3886,"name":"*","chunks":[],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/node_modules/next/dist/client/components/layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/node_modules/next/dist/esm/client/components/layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/node_modules/next/dist/client/components/metadata/async-metadata.js":{"id":5278,"name":"*","chunks":[],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/node_modules/next/dist/esm/client/components/metadata/async-metadata.js":{"id":5278,"name":"*","chunks":[],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/node_modules/next/dist/client/components/render-from-template-context.js":{"id":8924,"name":"*","chunks":[],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":8924,"name":"*","chunks":[],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/node_modules/next/dist/lib/framework/boundary-components.js":{"id":4431,"name":"*","chunks":[],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":4431,"name":"*","chunks":[],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":622,"name":"*","chunks":[],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":622,"name":"*","chunks":[],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/globals.css":{"id":1290,"name":"*","chunks":["177","static/chunks/app/layout-28a489fb4398663f.js"],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx":{"id":7322,"name":"*","chunks":["974","static/chunks/app/page-e58ccdb78625bce6.js"],"async":false}},"entryCSSFiles":{"/Users/dhananjaypai/Coding/Personal/opm/packages/web/":[],"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/layout":[{"inlined":false,"path":"static/css/21d69157e271f2ab.css"}],"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page":[],"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/_not-found/page":[]},"rscModuleMapping":{"622":{"*":{"id":"1384","name":"*","chunks":[],"async":false}},"1290":{"*":{"id":"2704","name":"*","chunks":[],"async":false}},"1959":{"*":{"id":"3597","name":"*","chunks":[],"async":false}},"3886":{"*":{"id":"9748","name":"*","chunks":[],"async":false}},"4431":{"*":{"id":"3041","name":"*","chunks":[],"async":false}},"5278":{"*":{"id":"7184","name":"*","chunks":[],"async":false}},"7150":{"*":{"id":"1170","name":"*","chunks":[],"async":false}},"7322":{"*":{"id":"7742","name":"*","chunks":[],"async":false}},"7989":{"*":{"id":"6893","name":"*","chunks":[],"async":false}},"8924":{"*":{"id":"9576","name":"*","chunks":[],"async":false}},"9766":{"*":{"id":"6060","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}}
1
+ globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/_not-found/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"622":{"*":{"id":"2146","name":"*","chunks":[],"async":false}},"1959":{"*":{"id":"1603","name":"*","chunks":[],"async":false}},"3886":{"*":{"id":"5170","name":"*","chunks":[],"async":false}},"4431":{"*":{"id":"2263","name":"*","chunks":[],"async":false}},"5278":{"*":{"id":"8922","name":"*","chunks":[],"async":false}},"7150":{"*":{"id":"4160","name":"*","chunks":[],"async":false}},"7322":{"*":{"id":"5022","name":"*","chunks":[],"async":false}},"7989":{"*":{"id":"8495","name":"*","chunks":[],"async":false}},"8924":{"*":{"id":"9234","name":"*","chunks":[],"async":false}},"9766":{"*":{"id":"7526","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/dhananjaypai/Coding/Personal/opm/packages/web/node_modules/next/dist/client/components/builtin/global-error.js":{"id":7150,"name":"*","chunks":[],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":7150,"name":"*","chunks":[],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/node_modules/next/dist/client/components/client-page.js":{"id":1959,"name":"*","chunks":[],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/node_modules/next/dist/esm/client/components/client-page.js":{"id":1959,"name":"*","chunks":[],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/node_modules/next/dist/client/components/client-segment.js":{"id":7989,"name":"*","chunks":[],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/node_modules/next/dist/esm/client/components/client-segment.js":{"id":7989,"name":"*","chunks":[],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":3886,"name":"*","chunks":[],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":3886,"name":"*","chunks":[],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/node_modules/next/dist/client/components/layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/node_modules/next/dist/esm/client/components/layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/node_modules/next/dist/client/components/metadata/async-metadata.js":{"id":5278,"name":"*","chunks":[],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/node_modules/next/dist/esm/client/components/metadata/async-metadata.js":{"id":5278,"name":"*","chunks":[],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/node_modules/next/dist/client/components/render-from-template-context.js":{"id":8924,"name":"*","chunks":[],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":8924,"name":"*","chunks":[],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/node_modules/next/dist/lib/framework/boundary-components.js":{"id":4431,"name":"*","chunks":[],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":4431,"name":"*","chunks":[],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":622,"name":"*","chunks":[],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":622,"name":"*","chunks":[],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/node_modules/next/font/google/target.css?{\"path\":\"app/layout.tsx\",\"import\":\"Geist\",\"arguments\":[{\"subsets\":[\"latin\"]}],\"variableName\":\"_geist\"}":{"id":4304,"name":"*","chunks":["177","static/chunks/app/layout-de8e841104500505.js"],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/node_modules/next/font/google/target.css?{\"path\":\"app/layout.tsx\",\"import\":\"Geist_Mono\",\"arguments\":[{\"subsets\":[\"latin\"]}],\"variableName\":\"_geistMono\"}":{"id":3672,"name":"*","chunks":["177","static/chunks/app/layout-de8e841104500505.js"],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/globals.css":{"id":1290,"name":"*","chunks":["177","static/chunks/app/layout-de8e841104500505.js"],"async":false},"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx":{"id":7322,"name":"*","chunks":["174","static/chunks/174-5b5efcb3b8efcc01.js","974","static/chunks/app/page-7e086379698b9fb0.js"],"async":false}},"entryCSSFiles":{"/Users/dhananjaypai/Coding/Personal/opm/packages/web/":[],"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/layout":[{"inlined":false,"path":"static/css/102562cf2d0ae9b0.css"}],"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page":[],"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/_not-found/page":[]},"rscModuleMapping":{"622":{"*":{"id":"1384","name":"*","chunks":[],"async":false}},"1290":{"*":{"id":"2704","name":"*","chunks":[],"async":false}},"1959":{"*":{"id":"3597","name":"*","chunks":[],"async":false}},"3886":{"*":{"id":"9748","name":"*","chunks":[],"async":false}},"4431":{"*":{"id":"3041","name":"*","chunks":[],"async":false}},"5278":{"*":{"id":"7184","name":"*","chunks":[],"async":false}},"7150":{"*":{"id":"1170","name":"*","chunks":[],"async":false}},"7322":{"*":{"id":"7742","name":"*","chunks":[],"async":false}},"7989":{"*":{"id":"6893","name":"*","chunks":[],"async":false}},"8924":{"*":{"id":"9576","name":"*","chunks":[],"async":false}},"9766":{"*":{"id":"6060","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}}