@n8r/surface 0.0.0-stage → 0.1.0-experimental.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.
- package/LICENSE +202 -0
- package/LICENSE-DOCS +395 -0
- package/LICENSING.md +36 -0
- package/README.md +207 -2
- package/dist/activity.d.ts +16 -0
- package/dist/activity.js +44 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +412 -0
- package/dist/codec.d.ts +6 -0
- package/dist/codec.js +56 -0
- package/dist/codex.d.ts +72 -0
- package/dist/codex.js +526 -0
- package/dist/contracts.d.ts +235 -0
- package/dist/contracts.js +1 -0
- package/dist/cyclonedx-schemas/bom-1.7.schema.json +6700 -0
- package/dist/cyclonedx-schemas/cryptography-defs.schema.json +576 -0
- package/dist/cyclonedx-schemas/jsf-0.82.schema.json +240 -0
- package/dist/cyclonedx-schemas/spdx.schema.json +786 -0
- package/dist/cyclonedx-validation.d.ts +1 -0
- package/dist/cyclonedx-validation.js +45 -0
- package/dist/html.d.ts +5 -0
- package/dist/html.js +74 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +5 -0
- package/dist/notes.d.ts +52 -0
- package/dist/notes.js +184 -0
- package/dist/portable.d.ts +10 -0
- package/dist/portable.js +71 -0
- package/dist/recent.d.ts +9 -0
- package/dist/recent.js +71 -0
- package/dist/revisions.d.ts +2 -0
- package/dist/revisions.js +60 -0
- package/dist/settings.d.ts +23 -0
- package/dist/settings.js +100 -0
- package/dist/setup.d.ts +9 -0
- package/dist/setup.js +161 -0
- package/dist/skill-artifacts-cli.d.ts +1 -0
- package/dist/skill-artifacts-cli.js +13 -0
- package/dist/skill-artifacts.d.ts +15 -0
- package/dist/skill-artifacts.js +184 -0
- package/dist/skill-cyclonedx.d.ts +26 -0
- package/dist/skill-cyclonedx.js +214 -0
- package/dist/skill-presentation.d.ts +10 -0
- package/dist/skill-presentation.js +108 -0
- package/dist/skill-surface-cli.d.ts +1 -0
- package/dist/skill-surface-cli.js +37 -0
- package/dist/skill-surface-store.d.ts +7 -0
- package/dist/skill-surface-store.js +126 -0
- package/dist/source-tools.d.ts +102 -0
- package/dist/source-tools.js +201 -0
- package/dist/startup.d.ts +7 -0
- package/dist/startup.js +74 -0
- package/dist/surface-bom.d.ts +73 -0
- package/dist/surface-bom.js +139 -0
- package/dist/surface-draft.d.ts +22 -0
- package/dist/surface-draft.js +112 -0
- package/dist/surface-instructions.d.ts +3 -0
- package/dist/surface-instructions.js +32 -0
- package/dist/surface-overview.d.ts +15 -0
- package/dist/surface-overview.js +86 -0
- package/dist/surface-store.d.ts +34 -0
- package/dist/surface-store.js +213 -0
- package/dist/surface-view.d.ts +3 -0
- package/dist/surface-view.js +50 -0
- package/dist/validate.d.ts +4 -0
- package/dist/validate.js +482 -0
- package/docs/n8r-surface/README.md +133 -0
- package/docs/n8r-surface/cli-bundles.md +72 -0
- package/docs/n8r-surface/codex-research-transcript.md +51 -0
- package/docs/n8r-surface/codex-research-verification.md +176 -0
- package/docs/n8r-surface/command-outcomes.md +711 -0
- package/docs/n8r-surface/contracts.md +220 -0
- package/docs/n8r-surface/critical-path.md +184 -0
- package/docs/n8r-surface/design.md +289 -0
- package/docs/n8r-surface/first-use-access.md +143 -0
- package/docs/n8r-surface/first-use-overview.md +262 -0
- package/docs/n8r-surface/getting-started.md +74 -0
- package/docs/n8r-surface/guided-journey-verification.md +137 -0
- package/docs/n8r-surface/host-contract.md +176 -0
- package/docs/n8r-surface/implementation-decisions.md +96 -0
- package/docs/n8r-surface/instance-first-research.md +209 -0
- package/docs/n8r-surface/npm-distribution.md +107 -0
- package/docs/n8r-surface/npm-release.md +315 -0
- package/docs/n8r-surface/product-direction.md +327 -0
- package/docs/n8r-surface/recreation-handoff.md +117 -0
- package/docs/n8r-surface/researcher-discovery.md +157 -0
- package/docs/n8r-surface/researcher-prepared-check.md +117 -0
- package/docs/n8r-surface/researcher-reconciliation-trial.md +149 -0
- package/docs/n8r-surface/researcher-repository-check.md +95 -0
- package/docs/n8r-surface/researcher-skeleton-check.md +84 -0
- package/docs/n8r-surface/researcher-skill-verification.md +725 -0
- package/docs/n8r-surface/researcher-skill.md +309 -0
- package/docs/n8r-surface/researcher-vault.md +134 -0
- package/docs/n8r-surface/save-reopen-transcript.md +211 -0
- package/docs/n8r-surface/save-reopen-verification.md +152 -0
- package/docs/n8r-surface/security-assurance-strategy.md +267 -0
- package/docs/n8r-surface/skill-bom-verification.md +142 -0
- package/docs/n8r-surface/skill-cyclonedx-verification.md +144 -0
- package/docs/n8r-surface/skill-cyclonedx.md +85 -0
- package/docs/n8r-surface/skill-manual.md +129 -0
- package/docs/n8r-surface/skill-surface-artifacts.md +234 -0
- package/docs/n8r-surface/skill-usefulness-verification.md +135 -0
- package/docs/n8r-surface/skill-workspace-automation.md +359 -0
- package/docs/n8r-surface/startup-human-check.md +172 -0
- package/docs/n8r-surface/startup-verification.md +161 -0
- package/docs/n8r-surface/startup.md +151 -0
- package/docs/n8r-surface/surface-description-contract.md +224 -0
- package/docs/n8r-surface/surface-descriptions.md +173 -0
- package/docs/n8r-surface/surface-relationships.md +231 -0
- package/docs/n8r-surface/surface-revisions-transcript.md +552 -0
- package/docs/n8r-surface/surface-revisions-verification.md +161 -0
- package/docs/n8r-surface/tester-candidate.md +158 -0
- package/docs/n8r-surface/vault-setup-verification.md +210 -0
- package/docs/n8r-surface/verification.md +117 -0
- package/docs/n8r-surface/versioning.md +172 -0
- package/docs/n8r-surface/workspace-human-check.md +101 -0
- package/docs/n8r-surface/workspace-installation.md +68 -0
- package/docs/n8r-surface/workspace-verification.md +350 -0
- package/docs/n8r-surface/workspace.md +83 -0
- package/examples/researcher/README.md +100 -0
- package/examples/researcher/composed.surface.json +430 -0
- package/examples/researcher/composed.surface.yaml +283 -0
- package/examples/researcher/cyclonedx/configured/README.md +7 -0
- package/examples/researcher/cyclonedx/configured/manifest.json +10 -0
- package/examples/researcher/cyclonedx/configured/mapping.json +323 -0
- package/examples/researcher/cyclonedx/configured/surface-records.json +1275 -0
- package/examples/researcher/cyclonedx/configured/surface.cdx.json +79 -0
- package/examples/researcher/descriptions/README.md +29 -0
- package/examples/researcher/descriptions/bound-r1.json +141 -0
- package/examples/researcher/descriptions/bound-r2.json +153 -0
- package/examples/researcher/descriptions/capability.json +167 -0
- package/examples/researcher/descriptions/research-r1.json +153 -0
- package/examples/researcher/descriptions/research-r2.json +157 -0
- package/examples/researcher/descriptions/sources.md +24 -0
- package/examples/researcher/harbor-r1.research.html +193 -0
- package/examples/researcher/harbor-r2.research.html +226 -0
- package/examples/researcher/lumen-manual-edit.pending.html +271 -0
- package/examples/researcher/lumen-r1.research.html +271 -0
- package/examples/researcher/lumen-r2.research.html +280 -0
- package/examples/researcher/relationships/README.md +34 -0
- package/examples/researcher/relationships/bound-r1.json +346 -0
- package/examples/researcher/relationships/bound-r2.json +358 -0
- package/examples/researcher/relationships/capability.json +325 -0
- package/examples/researcher/relationships/config/assistant.env.example +4 -0
- package/examples/researcher/relationships/research-r1.json +300 -0
- package/examples/researcher/relationships/research-r2.json +304 -0
- package/examples/researcher/relationships/sources.md +38 -0
- package/examples/researcher/sources/harbor-api.md +16 -0
- package/examples/researcher/sources/harbor-auth.md +8 -0
- package/examples/researcher/sources/lumen-guide.md +28 -0
- package/examples/researcher/sources/lumen-settings.md +9 -0
- package/examples/researcher/surface-bom/README.md +17 -0
- package/examples/researcher/surface-bom/initial.cdx.json +188 -0
- package/package.json +45 -4
- package/plugins/n8r-surface/.codex-plugin/plugin.json +31 -0
- package/plugins/n8r-surface/LICENSE +202 -0
- package/plugins/n8r-surface/LICENSE-DOCS +395 -0
- package/plugins/n8r-surface/LICENSING.md +39 -0
- package/plugins/n8r-surface/assets/icon.svg +5 -0
- package/plugins/n8r-surface/plugin.json +27 -0
- package/plugins/n8r-surface/skills/research/SKILL.md +163 -0
- package/plugins/n8r-surface/skills/research/agents/openai.yaml +4 -0
- package/plugins/n8r-surface/skills/research/references/artifacts.md +152 -0
- package/plugins/n8r-surface/skills/research/references/cyclonedx.md +207 -0
- package/plugins/n8r-surface/skills/research/references/discovery-map.md +178 -0
- package/plugins/n8r-surface/skills/research/references/examples/bound-r1.json +346 -0
- package/plugins/n8r-surface/skills/research/references/examples/capability.json +325 -0
- package/plugins/n8r-surface/skills/research/references/examples/research-r1.json +300 -0
- package/plugins/n8r-surface/skills/research/references/examples/surface.cdx.json +188 -0
- package/plugins/n8r-surface/skills/research/references/first-use-access.md +97 -0
- package/plugins/n8r-surface/skills/research/references/first-use-overview.md +101 -0
- package/plugins/n8r-surface/skills/research/references/instance-first.md +125 -0
- package/plugins/n8r-surface/skills/research/references/model-meanings.md +55 -0
- package/plugins/n8r-surface/skills/research/references/skeleton-surface.md +105 -0
- package/plugins/n8r-surface/skills/research/references/working-notes.md +121 -0
- package/plugins/n8r-surface/skills/research/references/workspace.md +89 -0
- package/plugins/n8r-surface/skills/research/scripts/THIRD-PARTY-NOTICES.txt +273 -0
- package/plugins/n8r-surface/skills/research/scripts/artifacts.mjs +8348 -0
- package/plugins/n8r-surface/skills/research/scripts/cyclonedx.mjs +28113 -0
- package/plugins/n8r-surface/skills/research/scripts/surface.mjs +27800 -0
- package/plugins/n8r-surface/skills/research/scripts/workspace.mjs +120 -0
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "urn:demo:relationship-research",
|
|
3
|
+
"title": "Synthetic relationship evidence",
|
|
4
|
+
"scope": "Synthetic role/product identities only; runtime unverified.",
|
|
5
|
+
"revision": {
|
|
6
|
+
"id": "r2",
|
|
7
|
+
"parent": {
|
|
8
|
+
"id": "urn:demo:relationship-research",
|
|
9
|
+
"revision": "r1",
|
|
10
|
+
"digest": "sha256:615bc6f8f443b986f78a46414faf97822206bcfcc9781e8d7c03d2dcb83940a0"
|
|
11
|
+
},
|
|
12
|
+
"createdAt": "2026-11-08T00:00:00Z",
|
|
13
|
+
"author": "Synthetic author",
|
|
14
|
+
"reason": "Changed configured database target"
|
|
15
|
+
},
|
|
16
|
+
"extensions": {},
|
|
17
|
+
"contract": "n8r.research/0.1",
|
|
18
|
+
"sources": [
|
|
19
|
+
{
|
|
20
|
+
"id": "urn:source:summary",
|
|
21
|
+
"location": "sources.md",
|
|
22
|
+
"version": "synthetic-relationships-1",
|
|
23
|
+
"digest": "sha256:cb9498a53d65fb16c16b7ac297b84b2d14a825297012bec9ac07df083e3c5647",
|
|
24
|
+
"inspectedAt": "2026-11-08T00:00:00Z",
|
|
25
|
+
"coverage": [
|
|
26
|
+
{
|
|
27
|
+
"path": "sources.md",
|
|
28
|
+
"status": "inspected",
|
|
29
|
+
"note": "Sanitized synthetic source pack, not raw configuration."
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"id": "urn:source:config",
|
|
35
|
+
"location": "config/assistant.env.example",
|
|
36
|
+
"version": "synthetic-1",
|
|
37
|
+
"digest": "sha256:d575d918e3e60fa1bf4490f7d6ceddafdcf0dba56b41b0e566a3adc8d88fe256",
|
|
38
|
+
"inspectedAt": "2026-11-08T00:00:00Z",
|
|
39
|
+
"coverage": [
|
|
40
|
+
{
|
|
41
|
+
"path": "config/assistant.env.example",
|
|
42
|
+
"status": "inspected",
|
|
43
|
+
"note": "Synthetic setting-name documentation only."
|
|
44
|
+
}
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"findings": [
|
|
49
|
+
{
|
|
50
|
+
"id": "urn:f:database",
|
|
51
|
+
"subject": "urn:node:app",
|
|
52
|
+
"property": "supports",
|
|
53
|
+
"state": "known",
|
|
54
|
+
"note": "Synthetic source assertion; not runtime evidence.",
|
|
55
|
+
"claims": [
|
|
56
|
+
{
|
|
57
|
+
"value": "urn:node:mongodb",
|
|
58
|
+
"evidence": [
|
|
59
|
+
{
|
|
60
|
+
"source": "urn:source:summary",
|
|
61
|
+
"locator": "Product guide"
|
|
62
|
+
}
|
|
63
|
+
]
|
|
64
|
+
}
|
|
65
|
+
]
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"id": "urn:f:oidc",
|
|
69
|
+
"subject": "urn:node:app",
|
|
70
|
+
"property": "supports",
|
|
71
|
+
"state": "known",
|
|
72
|
+
"note": "Synthetic source assertion; not runtime evidence.",
|
|
73
|
+
"claims": [
|
|
74
|
+
{
|
|
75
|
+
"value": "urn:node:oidc",
|
|
76
|
+
"evidence": [
|
|
77
|
+
{
|
|
78
|
+
"source": "urn:source:summary",
|
|
79
|
+
"locator": "Product guide"
|
|
80
|
+
}
|
|
81
|
+
]
|
|
82
|
+
}
|
|
83
|
+
]
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"id": "urn:f:saml",
|
|
87
|
+
"subject": "urn:node:app",
|
|
88
|
+
"property": "supports",
|
|
89
|
+
"state": "known",
|
|
90
|
+
"note": "Synthetic source assertion; not runtime evidence.",
|
|
91
|
+
"claims": [
|
|
92
|
+
{
|
|
93
|
+
"value": "urn:node:saml",
|
|
94
|
+
"evidence": [
|
|
95
|
+
{
|
|
96
|
+
"source": "urn:source:summary",
|
|
97
|
+
"locator": "Product guide"
|
|
98
|
+
}
|
|
99
|
+
]
|
|
100
|
+
}
|
|
101
|
+
]
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"id": "urn:f:database-bound",
|
|
105
|
+
"subject": "urn:instance:demo",
|
|
106
|
+
"property": "urn:cap:database",
|
|
107
|
+
"state": "known",
|
|
108
|
+
"note": "Synthetic source assertion; not runtime evidence.",
|
|
109
|
+
"claims": [
|
|
110
|
+
{
|
|
111
|
+
"value": "urn:target:mongodb",
|
|
112
|
+
"evidence": [
|
|
113
|
+
{
|
|
114
|
+
"source": "urn:source:summary",
|
|
115
|
+
"locator": "Sanitized instance configuration summary, revision 2"
|
|
116
|
+
}
|
|
117
|
+
]
|
|
118
|
+
}
|
|
119
|
+
]
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"id": "urn:f:identity",
|
|
123
|
+
"subject": "urn:instance:demo",
|
|
124
|
+
"property": "urn:cap:oidc",
|
|
125
|
+
"state": "conflicting",
|
|
126
|
+
"note": "Synthetic source assertion; not runtime evidence.",
|
|
127
|
+
"claims": [
|
|
128
|
+
{
|
|
129
|
+
"value": "urn:target:oidc",
|
|
130
|
+
"evidence": [
|
|
131
|
+
{
|
|
132
|
+
"source": "urn:source:summary",
|
|
133
|
+
"locator": "Sanitized instance configuration summary, revision 1"
|
|
134
|
+
}
|
|
135
|
+
]
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"value": "urn:target:saml",
|
|
139
|
+
"evidence": [
|
|
140
|
+
{
|
|
141
|
+
"source": "urn:source:summary",
|
|
142
|
+
"locator": "Sanitized instance configuration summary, revision 1"
|
|
143
|
+
}
|
|
144
|
+
]
|
|
145
|
+
}
|
|
146
|
+
]
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"id": "urn:f:database-purpose",
|
|
150
|
+
"subject": "urn:cap:database",
|
|
151
|
+
"property": "purpose",
|
|
152
|
+
"state": "known",
|
|
153
|
+
"note": "Synthetic source statement; no actual settings.",
|
|
154
|
+
"claims": [
|
|
155
|
+
{
|
|
156
|
+
"value": "Persist conversation history and user profiles.",
|
|
157
|
+
"evidence": [
|
|
158
|
+
{
|
|
159
|
+
"source": "urn:source:summary",
|
|
160
|
+
"locator": "Database integration"
|
|
161
|
+
}
|
|
162
|
+
]
|
|
163
|
+
}
|
|
164
|
+
]
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"id": "urn:f:database-integration",
|
|
168
|
+
"subject": "urn:cap:database",
|
|
169
|
+
"property": "integration",
|
|
170
|
+
"state": "known",
|
|
171
|
+
"note": "Synthetic source statement; no actual settings.",
|
|
172
|
+
"claims": [
|
|
173
|
+
{
|
|
174
|
+
"value": "MongoDB client driver using the MongoDB wire protocol.",
|
|
175
|
+
"evidence": [
|
|
176
|
+
{
|
|
177
|
+
"source": "urn:source:summary",
|
|
178
|
+
"locator": "Database integration"
|
|
179
|
+
}
|
|
180
|
+
]
|
|
181
|
+
}
|
|
182
|
+
]
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"id": "urn:f:database-configuration",
|
|
186
|
+
"subject": "urn:cap:database",
|
|
187
|
+
"property": "configuration",
|
|
188
|
+
"state": "known",
|
|
189
|
+
"note": "Synthetic source statement; no actual settings.",
|
|
190
|
+
"claims": [
|
|
191
|
+
{
|
|
192
|
+
"value": [
|
|
193
|
+
{
|
|
194
|
+
"owner": "urn:node:app",
|
|
195
|
+
"mechanism": "environment-variable",
|
|
196
|
+
"key": "CHAT_STORE_URI",
|
|
197
|
+
"location": "config/assistant.env.example"
|
|
198
|
+
}
|
|
199
|
+
],
|
|
200
|
+
"evidence": [
|
|
201
|
+
{
|
|
202
|
+
"source": "urn:source:config",
|
|
203
|
+
"locator": "CHAT_STORE_URI comment"
|
|
204
|
+
}
|
|
205
|
+
]
|
|
206
|
+
}
|
|
207
|
+
]
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
"id": "urn:f:oidc-purpose",
|
|
211
|
+
"subject": "urn:cap:oidc",
|
|
212
|
+
"property": "purpose",
|
|
213
|
+
"state": "known",
|
|
214
|
+
"note": "Synthetic source statement; no actual settings.",
|
|
215
|
+
"claims": [
|
|
216
|
+
{
|
|
217
|
+
"value": "Authenticate users through an identity service.",
|
|
218
|
+
"evidence": [
|
|
219
|
+
{
|
|
220
|
+
"source": "urn:source:summary",
|
|
221
|
+
"locator": "Authentication integration"
|
|
222
|
+
}
|
|
223
|
+
]
|
|
224
|
+
}
|
|
225
|
+
]
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
"id": "urn:f:oidc-integration",
|
|
229
|
+
"subject": "urn:cap:oidc",
|
|
230
|
+
"property": "integration",
|
|
231
|
+
"state": "known",
|
|
232
|
+
"note": "Synthetic source statement; no actual settings.",
|
|
233
|
+
"claims": [
|
|
234
|
+
{
|
|
235
|
+
"value": "OpenID Connect",
|
|
236
|
+
"evidence": [
|
|
237
|
+
{
|
|
238
|
+
"source": "urn:source:summary",
|
|
239
|
+
"locator": "Authentication integration"
|
|
240
|
+
}
|
|
241
|
+
]
|
|
242
|
+
}
|
|
243
|
+
]
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
"id": "urn:f:saml-purpose",
|
|
247
|
+
"subject": "urn:cap:saml",
|
|
248
|
+
"property": "purpose",
|
|
249
|
+
"state": "known",
|
|
250
|
+
"note": "Synthetic source statement; no actual settings.",
|
|
251
|
+
"claims": [
|
|
252
|
+
{
|
|
253
|
+
"value": "Authenticate users through an identity service.",
|
|
254
|
+
"evidence": [
|
|
255
|
+
{
|
|
256
|
+
"source": "urn:source:summary",
|
|
257
|
+
"locator": "Authentication integration"
|
|
258
|
+
}
|
|
259
|
+
]
|
|
260
|
+
}
|
|
261
|
+
]
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
"id": "urn:f:saml-integration",
|
|
265
|
+
"subject": "urn:cap:saml",
|
|
266
|
+
"property": "integration",
|
|
267
|
+
"state": "known",
|
|
268
|
+
"note": "Synthetic source statement; no actual settings.",
|
|
269
|
+
"claims": [
|
|
270
|
+
{
|
|
271
|
+
"value": "SAML 2.0",
|
|
272
|
+
"evidence": [
|
|
273
|
+
{
|
|
274
|
+
"source": "urn:source:summary",
|
|
275
|
+
"locator": "Authentication integration"
|
|
276
|
+
}
|
|
277
|
+
]
|
|
278
|
+
}
|
|
279
|
+
]
|
|
280
|
+
}
|
|
281
|
+
],
|
|
282
|
+
"alternatives": [
|
|
283
|
+
{
|
|
284
|
+
"id": "urn:option:oidc",
|
|
285
|
+
"title": "Prefer OIDC",
|
|
286
|
+
"findings": [
|
|
287
|
+
"urn:f:identity"
|
|
288
|
+
],
|
|
289
|
+
"requirements": []
|
|
290
|
+
}
|
|
291
|
+
],
|
|
292
|
+
"decisions": [
|
|
293
|
+
{
|
|
294
|
+
"id": "urn:decision:oidc",
|
|
295
|
+
"alternative": "urn:option:oidc",
|
|
296
|
+
"choice": "selected",
|
|
297
|
+
"reason": "Synthetic human preference; conflict unresolved.",
|
|
298
|
+
"by": "Synthetic reviewer",
|
|
299
|
+
"at": "2026-11-08T00:00:00Z"
|
|
300
|
+
}
|
|
301
|
+
],
|
|
302
|
+
"questions": [],
|
|
303
|
+
"notes": []
|
|
304
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Fictional assistant source pack
|
|
2
|
+
|
|
3
|
+
## Product guide
|
|
4
|
+
|
|
5
|
+
The assistant supports MongoDB storage, OIDC authentication, and SAML authentication.
|
|
6
|
+
OIDC and SAML are mutually exclusive for this example instance. Inference support
|
|
7
|
+
has not been researched.
|
|
8
|
+
|
|
9
|
+
## Sanitized instance configuration summary, revision 1
|
|
10
|
+
|
|
11
|
+
The database relationship is configured for MongoDB Atlas. No endpoint, username,
|
|
12
|
+
password or key is included. The two permitted summaries disagree about identity:
|
|
13
|
+
one identifies the OIDC service, the other the SAML service. Neither establishes
|
|
14
|
+
runtime use. Inference binding evidence is missing.
|
|
15
|
+
|
|
16
|
+
## Human decision
|
|
17
|
+
|
|
18
|
+
A synthetic reviewer prefers OIDC. This decision does not resolve the contradictory
|
|
19
|
+
configuration summaries.
|
|
20
|
+
|
|
21
|
+
## Sanitized instance configuration summary, revision 2
|
|
22
|
+
|
|
23
|
+
The database relationship is now configured for a self-hosted MongoDB service.
|
|
24
|
+
The other evidence remains unchanged. No actual setting values are supplied.
|
|
25
|
+
|
|
26
|
+
## Database integration
|
|
27
|
+
|
|
28
|
+
The fictional assistant persists conversation history and user profiles in MongoDB.
|
|
29
|
+
It connects using a MongoDB client driver and the MongoDB wire protocol.
|
|
30
|
+
The assistant owns the CHAT_STORE_URI environment variable, documented in
|
|
31
|
+
config/assistant.env.example. Only the setting name and relative documentation
|
|
32
|
+
location are retained here; no configured value is included.
|
|
33
|
+
|
|
34
|
+
## Authentication integration
|
|
35
|
+
|
|
36
|
+
The assistant authenticates users through an identity service. OIDC uses the
|
|
37
|
+
OpenID Connect protocol; SAML uses SAML 2.0. Configuration locations have not been
|
|
38
|
+
researched and must remain unknown, not absent.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Harbor Archive — fictional interface notes, fixture-1
|
|
2
|
+
|
|
3
|
+
Harbor Archive is a synthetic document and event archival product. It is
|
|
4
|
+
independent of Lumen Desk and has no built-in knowledge of summarization or AI.
|
|
5
|
+
|
|
6
|
+
## Intake
|
|
7
|
+
|
|
8
|
+
Harbor offers separate HTTP routes for storing documents and appending audit
|
|
9
|
+
events. JSON request payloads are supported. Exact payload fields, limits and
|
|
10
|
+
authentication are not specified by this document.
|
|
11
|
+
|
|
12
|
+
## Notifications
|
|
13
|
+
|
|
14
|
+
An optional outbound HTTP callback reports archival events. Its exact payload
|
|
15
|
+
and the receiver's compatibility need investigation. No integration with Lumen
|
|
16
|
+
Desk has been tested. No deployment or exercised request trace is supplied.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Harbor Archive — fictional authentication note, fixture-2
|
|
2
|
+
|
|
3
|
+
This second source supplements fixture-1's interface notes. Harbor accepts OIDC
|
|
4
|
+
bearer tokens from a configured issuer. The issuer's identity, expected audience,
|
|
5
|
+
claim checks and credential bindings remain local configuration requirements.
|
|
6
|
+
|
|
7
|
+
This document establishes a supported option, not a selected issuer, successful
|
|
8
|
+
sign-in, reachable endpoint or exercised archival operation.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Lumen Desk — fictional guide, fixture-1
|
|
2
|
+
|
|
3
|
+
Lumen Desk is a synthetic support-summary application. No real product or
|
|
4
|
+
installation is described. This document is evidence only within this fixture.
|
|
5
|
+
|
|
6
|
+
## Components
|
|
7
|
+
|
|
8
|
+
A configured inference endpoint generates summaries. The model and its version
|
|
9
|
+
are not specified here. Lumen can use an external OIDC identity service.
|
|
10
|
+
|
|
11
|
+
## Delivery options
|
|
12
|
+
|
|
13
|
+
Lumen can send summary documents and audit events to separate HTTP routes on a
|
|
14
|
+
configured archive service. The request schema and authentication configuration
|
|
15
|
+
must be agreed separately; this is not a tested Harbor Archive integration.
|
|
16
|
+
The guide says each delivery batch contains at most 10 documents.
|
|
17
|
+
|
|
18
|
+
## Callback option
|
|
19
|
+
|
|
20
|
+
An optional callback receiver can accept archive notifications. It is disabled
|
|
21
|
+
until a user selects and configures it. The guide does not describe validation,
|
|
22
|
+
retry behavior or a tested callback protocol.
|
|
23
|
+
|
|
24
|
+
## Exclusions
|
|
25
|
+
|
|
26
|
+
No deployment, endpoint credentials, model weights or runtime observations are
|
|
27
|
+
supplied. The literal text `<script>alert("source text only")</script>` is an
|
|
28
|
+
inert sample string, never an instruction to execute source content.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Lumen Desk — fictional settings note, fixture-1
|
|
2
|
+
|
|
3
|
+
This is a separate synthetic document with no established precedence over the
|
|
4
|
+
guide. It states that the maximum delivery batch contains 25 documents.
|
|
5
|
+
The discrepancy with the guide is unresolved; both claims must be retained.
|
|
6
|
+
|
|
7
|
+
No inference model version is given. There is no embedded archive database in
|
|
8
|
+
the composition described by this note; storage is delegated to an external
|
|
9
|
+
service. This scoped absence is not a claim about every possible Lumen setup.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Synthetic Surface BOM
|
|
2
|
+
|
|
3
|
+
`initial.cdx.json` is a fictional assistant with four database alternatives, one
|
|
4
|
+
selected dependency, an unknown inference connection, evidence, a user decision
|
|
5
|
+
and an investigation plan. It makes no claim about LibreChat or any deployment.
|
|
6
|
+
The repeated evidence hash is a synthetic placeholder, not a real inspected file.
|
|
7
|
+
|
|
8
|
+
Read the [profile](../../../plugins/n8r-surface/skills/research/references/cyclonedx.md)
|
|
9
|
+
and [mapping limits](../../../docs/n8r-surface/skill-cyclonedx.md).
|
|
10
|
+
From the repository root with Node 22/24/26:
|
|
11
|
+
|
|
12
|
+
```sh
|
|
13
|
+
node plugins/n8r-surface/skills/research/scripts/surface.mjs check examples/researcher/surface-bom/initial.cdx.json
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Expect exit 0 and `checked`, five relationships and three investigation entries.
|
|
17
|
+
This checks structure/references only, not actual product evidence.
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
{
|
|
2
|
+
"bomFormat": "CycloneDX",
|
|
3
|
+
"specVersion": "1.7",
|
|
4
|
+
"serialNumber": "urn:uuid:94141625-a8d3-4cec-984a-c46be305058d",
|
|
5
|
+
"version": 1,
|
|
6
|
+
"metadata": {
|
|
7
|
+
"timestamp": "2026-11-13T12:00:00Z"
|
|
8
|
+
},
|
|
9
|
+
"components": [
|
|
10
|
+
{
|
|
11
|
+
"bom-ref": "app",
|
|
12
|
+
"type": "application",
|
|
13
|
+
"name": "Synthetic Assistant"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"bom-ref": "model",
|
|
17
|
+
"type": "machine-learning-model",
|
|
18
|
+
"name": "Synthetic Model"
|
|
19
|
+
}
|
|
20
|
+
],
|
|
21
|
+
"services": [
|
|
22
|
+
{
|
|
23
|
+
"bom-ref": "db-a",
|
|
24
|
+
"name": "Database A"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"bom-ref": "db-b",
|
|
28
|
+
"name": "Database B"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"bom-ref": "db-c",
|
|
32
|
+
"name": "Database C"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"bom-ref": "db-d",
|
|
36
|
+
"name": "Database D"
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
"dependencies": [
|
|
40
|
+
{
|
|
41
|
+
"ref": "app",
|
|
42
|
+
"dependsOn": [
|
|
43
|
+
"db-b"
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
],
|
|
47
|
+
"compositions": [
|
|
48
|
+
{
|
|
49
|
+
"aggregate": "unknown"
|
|
50
|
+
}
|
|
51
|
+
],
|
|
52
|
+
"annotations": [
|
|
53
|
+
{
|
|
54
|
+
"bom-ref": "evidence-support",
|
|
55
|
+
"subjects": [
|
|
56
|
+
"app",
|
|
57
|
+
"db-a",
|
|
58
|
+
"db-b",
|
|
59
|
+
"db-c",
|
|
60
|
+
"db-d"
|
|
61
|
+
],
|
|
62
|
+
"annotator": {
|
|
63
|
+
"individual": {
|
|
64
|
+
"name": "Researcher"
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
"timestamp": "2026-11-13T12:00:00Z",
|
|
68
|
+
"text": "The synthetic source describes four supported database alternatives. This does not establish a selected deployment."
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"bom-ref": "evidence-selection",
|
|
72
|
+
"subjects": [
|
|
73
|
+
"app",
|
|
74
|
+
"db-b"
|
|
75
|
+
],
|
|
76
|
+
"annotator": {
|
|
77
|
+
"individual": {
|
|
78
|
+
"name": "Researcher"
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
"timestamp": "2026-11-13T12:00:00Z",
|
|
82
|
+
"text": "A synthetic safe configuration projection identifies database B; connection values were not retained."
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"bom-ref": "decision-1",
|
|
86
|
+
"subjects": [
|
|
87
|
+
"app"
|
|
88
|
+
],
|
|
89
|
+
"annotator": {
|
|
90
|
+
"individual": {
|
|
91
|
+
"name": "User"
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
"timestamp": "2026-11-13T12:00:00Z",
|
|
95
|
+
"text": "Investigate storage before model hosting."
|
|
96
|
+
}
|
|
97
|
+
],
|
|
98
|
+
"externalReferences": [
|
|
99
|
+
{
|
|
100
|
+
"type": "evidence",
|
|
101
|
+
"url": "synthetic-source-pack",
|
|
102
|
+
"comment": "Synthetic source pack; version 1; inspected support and safe projection only.",
|
|
103
|
+
"hashes": [
|
|
104
|
+
{
|
|
105
|
+
"alg": "SHA-256",
|
|
106
|
+
"content": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
|
107
|
+
}
|
|
108
|
+
]
|
|
109
|
+
}
|
|
110
|
+
],
|
|
111
|
+
"citations": [
|
|
112
|
+
{
|
|
113
|
+
"bom-ref": "citation-1",
|
|
114
|
+
"pointers": [
|
|
115
|
+
"/annotations/0/text"
|
|
116
|
+
],
|
|
117
|
+
"timestamp": "2026-11-13T12:00:00Z",
|
|
118
|
+
"attributedTo": "app",
|
|
119
|
+
"note": "Synthetic fixture attribution, not real product evidence."
|
|
120
|
+
}
|
|
121
|
+
],
|
|
122
|
+
"properties": [
|
|
123
|
+
{
|
|
124
|
+
"name": "n8r:surface:profile",
|
|
125
|
+
"value": "1"
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"name": "n8r:surface:objective",
|
|
129
|
+
"value": "Understand storage choices and the selected connection."
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"name": "n8r:surface:scope",
|
|
133
|
+
"value": "Synthetic assistant; no live runtime access."
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"name": "n8r:surface:relationship",
|
|
137
|
+
"value": "{\"id\":\"storage-a\",\"from\":\"app\",\"to\":\"db-a\",\"kind\":\"dependency\",\"optionality\":\"alternative\",\"group\":\"storage\",\"support\":\"supported\",\"selection\":\"unknown\",\"observations\":[],\"evidence\":[\"evidence-support\"],\"selectionEvidence\":[],\"purpose\":\"Persist conversation state\",\"mechanism\":\"Database driver\",\"configuration\":[],\"conditions\":[],\"note\":\"Supported alternative; selection of other targets is unestablished.\"}"
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"name": "n8r:surface:relationship",
|
|
141
|
+
"value": "{\"id\":\"storage-b\",\"from\":\"app\",\"to\":\"db-b\",\"kind\":\"dependency\",\"optionality\":\"alternative\",\"group\":\"storage\",\"support\":\"supported\",\"selection\":\"selected\",\"observations\":[],\"evidence\":[\"evidence-support\"],\"selectionEvidence\":[\"evidence-selection\"],\"purpose\":\"Persist conversation state\",\"mechanism\":\"Database driver\",\"configuration\":[\"safe-projection.json: database-kind\"],\"conditions\":[],\"note\":\"Supported alternative; selection of other targets is unestablished.\"}"
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"name": "n8r:surface:relationship",
|
|
145
|
+
"value": "{\"id\":\"storage-c\",\"from\":\"app\",\"to\":\"db-c\",\"kind\":\"dependency\",\"optionality\":\"alternative\",\"group\":\"storage\",\"support\":\"supported\",\"selection\":\"unknown\",\"observations\":[],\"evidence\":[\"evidence-support\"],\"selectionEvidence\":[],\"purpose\":\"Persist conversation state\",\"mechanism\":\"Database driver\",\"configuration\":[],\"conditions\":[],\"note\":\"Supported alternative; selection of other targets is unestablished.\"}"
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"name": "n8r:surface:relationship",
|
|
149
|
+
"value": "{\"id\":\"storage-d\",\"from\":\"app\",\"to\":\"db-d\",\"kind\":\"dependency\",\"optionality\":\"alternative\",\"group\":\"storage\",\"support\":\"supported\",\"selection\":\"unknown\",\"observations\":[],\"evidence\":[\"evidence-support\"],\"selectionEvidence\":[],\"purpose\":\"Persist conversation state\",\"mechanism\":\"Database driver\",\"configuration\":[],\"conditions\":[],\"note\":\"Supported alternative; selection of other targets is unestablished.\"}"
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"name": "n8r:surface:relationship",
|
|
153
|
+
"value": "{\"id\":\"inference\",\"from\":\"app\",\"to\":\"model\",\"kind\":\"integration\",\"optionality\":\"unknown\",\"group\":\"\",\"support\":\"unknown\",\"selection\":\"unknown\",\"observations\":[],\"evidence\":[],\"selectionEvidence\":[],\"purpose\":\"Generate a response\",\"mechanism\":\"Unknown\",\"configuration\":[],\"conditions\":[],\"note\":\"Model serving connection remains uninvestigated.\"}"
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"name": "n8r:surface:entry",
|
|
157
|
+
"value": "{\"id\":\"plan-1\",\"kind\":\"next\",\"title\":\"Inspect storage selection\",\"text\":\"Establish the selected database from a safe configuration projection.\",\"status\":\"done\",\"reason\":\"Projection supplied in this synthetic example.\",\"access\":\"Safe configuration projection\",\"evidence\":[\"evidence-selection\"],\"at\":\"2026-11-13T12:00:00Z\"}"
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"name": "n8r:surface:entry",
|
|
161
|
+
"value": "{\"id\":\"choice-1\",\"kind\":\"decision\",\"title\":\"Storage first\",\"text\":\"Investigate storage before model hosting.\",\"status\":\"active\",\"reason\":\"User priority\",\"access\":\"None\",\"evidence\":[\"decision-1\"],\"at\":\"2026-11-13T12:00:00Z\"}"
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"name": "n8r:surface:entry",
|
|
165
|
+
"value": "{\"id\":\"question-1\",\"kind\":\"question\",\"title\":\"Which service hosts inference?\",\"text\":\"Inspect the serving configuration to identify the model endpoint role.\",\"status\":\"open\",\"reason\":\"Source does not establish this connection.\",\"access\":\"Safe inference configuration\",\"evidence\":[],\"at\":\"2026-11-13T12:00:00Z\"}"
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
"name": "n8r:surface:coverage",
|
|
169
|
+
"value": "Only synthetic support and selection sources inspected."
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"name": "n8r:surface:gap",
|
|
173
|
+
"value": "Runtime use has not been observed."
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
"name": "n8r:surface:evidence",
|
|
177
|
+
"value": "{\"id\": \"evidence-support\", \"basis\": \"source\", \"sources\": [{\"index\": 0, \"locator\": \"support.md:1-20\"}], \"applicability\": \"Synthetic fixture only.\"}"
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"name": "n8r:surface:evidence",
|
|
181
|
+
"value": "{\"id\": \"evidence-selection\", \"basis\": \"configuration\", \"sources\": [{\"index\": 0, \"locator\": \"safe-projection.json: database-kind\"}], \"applicability\": \"Synthetic fixture only.\"}"
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
"name": "n8r:surface:evidence",
|
|
185
|
+
"value": "{\"id\": \"decision-1\", \"basis\": \"user\", \"sources\": [], \"applicability\": \"Synthetic fixture only.\"}"
|
|
186
|
+
}
|
|
187
|
+
]
|
|
188
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,47 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@n8r/surface",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"description": "
|
|
6
|
-
|
|
3
|
+
"version": "0.1.0-experimental.5",
|
|
4
|
+
"private": false,
|
|
5
|
+
"description": "Experimental AI Surface Model library and Codex research command",
|
|
6
|
+
"bin": {
|
|
7
|
+
"n8r-surface": "./dist/cli.js"
|
|
8
|
+
},
|
|
9
|
+
"type": "module",
|
|
10
|
+
"license": "Apache-2.0 AND CC-BY-4.0",
|
|
11
|
+
"engines": {
|
|
12
|
+
"node": "^22.0.0 || ^24.0.0 || ^26.0.0"
|
|
13
|
+
},
|
|
14
|
+
"exports": {
|
|
15
|
+
".": {
|
|
16
|
+
"types": "./dist/index.d.ts",
|
|
17
|
+
"import": "./dist/index.js"
|
|
18
|
+
},
|
|
19
|
+
"./examples/*": "./examples/researcher/*",
|
|
20
|
+
"./contracts/*": "./docs/n8r-surface/*"
|
|
21
|
+
},
|
|
22
|
+
"files": [
|
|
23
|
+
"dist",
|
|
24
|
+
"docs/n8r-surface",
|
|
25
|
+
"examples/researcher",
|
|
26
|
+
"LICENSE",
|
|
27
|
+
"LICENSE-DOCS",
|
|
28
|
+
"LICENSING.md",
|
|
29
|
+
"plugins/n8r-surface"
|
|
30
|
+
],
|
|
31
|
+
"dependencies": {
|
|
32
|
+
"yaml": "2.9.1"
|
|
33
|
+
},
|
|
34
|
+
"repository": {
|
|
35
|
+
"type": "git",
|
|
36
|
+
"url": "git+https://github.com/injectionator/n8r-surface.git"
|
|
37
|
+
},
|
|
38
|
+
"homepage": "https://github.com/injectionator/n8r-surface#readme",
|
|
39
|
+
"bugs": {
|
|
40
|
+
"url": "https://github.com/injectionator/n8r-surface/issues"
|
|
41
|
+
},
|
|
42
|
+
"publishConfig": {
|
|
43
|
+
"access": "public",
|
|
44
|
+
"registry": "https://registry.npmjs.org",
|
|
45
|
+
"tag": "experimental"
|
|
46
|
+
}
|
|
47
|
+
}
|