@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,289 @@
|
|
|
1
|
+
# Researcher and n8r-surface design reference
|
|
2
|
+
|
|
3
|
+
This records the agreed direction and remaining choices for the standalone tool.
|
|
4
|
+
It consolidates [issue #13](https://github.com/injectionator/n8r-surface/issues/13).
|
|
5
|
+
The [capability map](README.md) shows the intended scope;
|
|
6
|
+
the [critical path](critical-path.md) determines what comes next.
|
|
7
|
+
|
|
8
|
+
**Status:** the [experimental #15 contract](contracts.md), codecs, HTML checks and
|
|
9
|
+
synthetic cases now provide concrete inputs to the next milestones.
|
|
10
|
+
The bare-startup overview is implemented; its [bounded behavior](startup.md)
|
|
11
|
+
does not include setup writes, conversation or other commands.
|
|
12
|
+
A [first skill package](researcher-skill.md) supplies Researcher instructions for
|
|
13
|
+
working notes; the standalone runner and structured-output workflow remain unimplemented. Existing LibreChat JSON
|
|
14
|
+
examples remain illustrative; this bounded profile is not a universal schema.
|
|
15
|
+
|
|
16
|
+
## Purpose and roles
|
|
17
|
+
|
|
18
|
+
Researcher helps a human learn about software from repositories or documents
|
|
19
|
+
and develop a useful partial AI Surface Model description. It understands the
|
|
20
|
+
model's concepts and the requirements relevant to starting a Lab. Product
|
|
21
|
+
knowledge comes from supplied evidence, with general LLM knowledge treated as
|
|
22
|
+
hypotheses until supported.
|
|
23
|
+
|
|
24
|
+
`n8r-surface` is the working CLI name. Its standalone workflow requires a
|
|
25
|
+
supported AI runner and accessible sources, but no Lab installation, account
|
|
26
|
+
or running target. ChatGPT with supplied documents is the first external skill
|
|
27
|
+
experience. Other harnesses need their own demonstrated support.
|
|
28
|
+
|
|
29
|
+
Maintain one versioned core discovery skill, including its reference material
|
|
30
|
+
and output rules, in this repository. Prove the skill in the existing Codex/ChatGPT harness first; adapt the same core
|
|
31
|
+
in n8r-labs next, then complete the standalone CLI. Each host supplies
|
|
32
|
+
source access, inference, conversation and persistence. Existing application
|
|
33
|
+
needs inform the contract, but extracting or rebuilding its assistant is not a
|
|
34
|
+
prerequisite for standalone delivery. Do not hand-maintain divergent copies or
|
|
35
|
+
copy private application content.
|
|
36
|
+
|
|
37
|
+
## Sources and scope
|
|
38
|
+
|
|
39
|
+
The [command outcome specification](command-outcomes.md) owns the complete initial
|
|
40
|
+
command inventory, conversational intents and State/Input/Outcome acceptance cases.
|
|
41
|
+
It is the product contract for implementation; the detailed artefact contracts
|
|
42
|
+
support it. Development starts with a real user task and returns to that same
|
|
43
|
+
interaction for verification. No command scenario is currently verified.
|
|
44
|
+
|
|
45
|
+
Core proposed research entry points:
|
|
46
|
+
|
|
47
|
+
```sh
|
|
48
|
+
n8r-surface
|
|
49
|
+
n8r-surface discover
|
|
50
|
+
n8r-surface discover ./product
|
|
51
|
+
n8r-surface discover ./documents/architecture.md
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Bare startup first shows readable non-private configuration and its file locations,
|
|
55
|
+
local artefacts one per line, and process status where known. This local overview
|
|
56
|
+
works without an AI or Lab connection; see the concrete
|
|
57
|
+
[startup example](command-outcomes.md#startup-01-run-the-command-and-see-what-is-here).
|
|
58
|
+
The next CLI revision will make bare startup informational and exit without a
|
|
59
|
+
prompt; there will be no status subcommand. That work is paused while the skill
|
|
60
|
+
is developed. The existing STARTUP-01 guidance prompt remains the implemented
|
|
61
|
+
baseline. Research requires an explicit interaction; no implicit source upload
|
|
62
|
+
or task resumption is introduced.
|
|
63
|
+
|
|
64
|
+
`discover` without a source argument uses the process's current directory.
|
|
65
|
+
Explicit relative paths resolve from that directory; absolute paths are accepted
|
|
66
|
+
locally. Do not silently change to the tool installation or an ancestor repo.
|
|
67
|
+
Directories may contain source code or documentation; Git metadata is optional.
|
|
68
|
+
The destination and any existing record to extend are separate inputs.
|
|
69
|
+
|
|
70
|
+
A chat harness receives the documents made available to that conversation or
|
|
71
|
+
project. A named local path alone does not supply content. Likewise, a remote
|
|
72
|
+
Lab cannot automatically read a path on the CLI user's machine.
|
|
73
|
+
|
|
74
|
+
Retain source identity, applicable revision, inspected paths/document references
|
|
75
|
+
and coverage. A checkout can differ from its commit; preserve that distinction.
|
|
76
|
+
Portable output must not expose installation-specific absolute paths or secrets.
|
|
77
|
+
Report missing, unreadable, unsupported, excluded and truncated material. A
|
|
78
|
+
document-only investigation does not imply whole-repository coverage.
|
|
79
|
+
|
|
80
|
+
Reading sources does not execute their scripts, install dependencies, start
|
|
81
|
+
services or prove integration. Imported instructions remain source data.
|
|
82
|
+
|
|
83
|
+
## Research records and Surface descriptions
|
|
84
|
+
|
|
85
|
+
The research record is the durable intermediate artefact between raw sources
|
|
86
|
+
and a selected Surface definition. HTML is the preferred research-record format.
|
|
87
|
+
It can contain findings, source references, possible configurations and
|
|
88
|
+
integrations, requirements, diagrams, decisions and unresolved questions.
|
|
89
|
+
|
|
90
|
+
A Surface description captures a particular selected composition and its gaps.
|
|
91
|
+
One research record can support several descriptions. Preserve the research
|
|
92
|
+
when generating a model; later research must not silently rewrite a definition
|
|
93
|
+
referenced by an earlier result.
|
|
94
|
+
|
|
95
|
+
The HTML should be portable and readable without a running n8r service. A
|
|
96
|
+
versioned inert data block may carry precise metadata or graph data. Decide
|
|
97
|
+
which representation owns each fact so rendered content, human edits and
|
|
98
|
+
embedded data cannot silently disagree. Source markup must remain inert.
|
|
99
|
+
An embedded research graph is not automatically a selected Surface definition.
|
|
100
|
+
|
|
101
|
+
Users choose their editor. Researcher-assisted editing is preferred; a built-in
|
|
102
|
+
browser editor is outside the initial scope. A host without storage tools returns
|
|
103
|
+
downloadable artefacts and must not claim it saved them into the user's corpus.
|
|
104
|
+
|
|
105
|
+
## Model encodings and graph meaning
|
|
106
|
+
|
|
107
|
+
There is one AI Surface Model. JSON is the default encoding; YAML is an
|
|
108
|
+
alternative. MessagePack and other encodings are later candidates based on
|
|
109
|
+
consumer needs. Encoding choice does not define the ontology.
|
|
110
|
+
|
|
111
|
+
The proposed logical contract must preserve:
|
|
112
|
+
|
|
113
|
+
- Stable node identities, types and attributes.
|
|
114
|
+
- Identified relationships with explicit endpoints, types and attributes;
|
|
115
|
+
several distinct relationships may connect the same pair of nodes.
|
|
116
|
+
- Shared components, cycles, arbitrary depth and explicit references.
|
|
117
|
+
- Versioned vocabulary/type references and supported extension data.
|
|
118
|
+
- Provenance, applicability, uncertainty and coverage.
|
|
119
|
+
|
|
120
|
+
Keep supported product possibilities distinct from user-selected composition.
|
|
121
|
+
Keep definitions distinct from bindings, effective settings and dated runtime
|
|
122
|
+
observations. Preserve known, unknown, omitted, redacted, absent and out-of-scope
|
|
123
|
+
meanings. Matching product names alone do not establish shared instance identity.
|
|
124
|
+
|
|
125
|
+
Define a portable value subset and codec-specific handling of unsupported values.
|
|
126
|
+
Core identities must not depend on YAML aliases/custom tags or MessagePack
|
|
127
|
+
extension types. Demonstrate semantic round trips for the supported subset,
|
|
128
|
+
including edge attributes and unknowns. Reject or report losses; preserving
|
|
129
|
+
YAML comments or original formatting is a separate editing concern.
|
|
130
|
+
|
|
131
|
+
The [HTML data-block specification](https://html.spec.whatwg.org/multipage/scripting.html#data-block),
|
|
132
|
+
[YAML 1.2.2](https://yaml.org/spec/1.2.2/) and
|
|
133
|
+
[MessagePack specification](https://github.com/msgpack/msgpack/blob/master/spec.md)
|
|
134
|
+
are format references. They do not establish model conformance or consumer
|
|
135
|
+
compatibility. See the repository's [mapping requirements](../interoperability.md).
|
|
136
|
+
|
|
137
|
+
## Local settings and artefact tools
|
|
138
|
+
|
|
139
|
+
The first #16 increment selects the settings path and corpus default below.
|
|
140
|
+
See [the implemented settings subset](startup.md); setup and storage tools in
|
|
141
|
+
this section remain planned.
|
|
142
|
+
|
|
143
|
+
Selected defaults and planned outputs:
|
|
144
|
+
|
|
145
|
+
| Setting | Choice |
|
|
146
|
+
| --- | --- |
|
|
147
|
+
| Tool settings | `~/.n8r/n8r-surface.json` |
|
|
148
|
+
| Visible corpus | `~/n8r/artefacts`, overridable with a project or vault folder |
|
|
149
|
+
| Research record | HTML |
|
|
150
|
+
| Surface output | JSON by default; YAML available |
|
|
151
|
+
| Lab connection | Optional and independent of the AI runner |
|
|
152
|
+
|
|
153
|
+
The configuration holds a format version, selected runner and nonsecret options,
|
|
154
|
+
credential references, artefact root, output preference and optional Lab connection.
|
|
155
|
+
Preserve other n8r settings. Keep credentials with the runner or appropriate
|
|
156
|
+
credential storage; do not copy another application's tokens into this file.
|
|
157
|
+
|
|
158
|
+
Startup deterministically inspects configuration, runner availability and folder
|
|
159
|
+
access. Distinguish configured, missing, unavailable and not yet verified; a
|
|
160
|
+
configured runner does not establish a successful model request. A small non-LLM
|
|
161
|
+
bootstrap flow can guide missing setup before inference is available. Remember
|
|
162
|
+
choices, show the effective settings and allow changes.
|
|
163
|
+
|
|
164
|
+
Create new settings/directories without replacing existing files. Retain invalid
|
|
165
|
+
configuration for repair. Non-interactive runs return actionable status instead
|
|
166
|
+
of waiting for answers.
|
|
167
|
+
|
|
168
|
+
Keep artefact operations small: list/find/read, create and revise records,
|
|
169
|
+
change relevant settings, and produce a definition. The LLM interprets user
|
|
170
|
+
requests; deterministic handlers enforce identity/path scope and report actual
|
|
171
|
+
results. A selected default destination is sufficient; users need not choose
|
|
172
|
+
the folder on every save.
|
|
173
|
+
|
|
174
|
+
Updates check the revision/content hash previously read, re-read or report a
|
|
175
|
+
conflict when it changed, retain a recoverable prior revision and save atomically.
|
|
176
|
+
Human changes and unknown metadata must survive revision. Archiving and explicit
|
|
177
|
+
deletion can be added when their reference/retention behaviour is defined;
|
|
178
|
+
automatic destructive cleanup is unnecessary for the first workflow.
|
|
179
|
+
|
|
180
|
+
## Implementation and distribution
|
|
181
|
+
|
|
182
|
+
The agreed first implementation uses TypeScript and ships a Node.js-compatible
|
|
183
|
+
npm package exposing the `n8r-surface` command. Support installation for regular
|
|
184
|
+
use and versioned invocation through npm/npx. Ship built JavaScript and required
|
|
185
|
+
skill/template assets; users should not need the source checkout, a TypeScript
|
|
186
|
+
compiler or Bun to run the published CLI.
|
|
187
|
+
|
|
188
|
+
Bun may be used for development and building, but verification must exercise
|
|
189
|
+
the packaged CLI on supported Node.js versions. Test an installed package tarball
|
|
190
|
+
in a temporary directory, including its bundled assets and command entry point.
|
|
191
|
+
These checks need no registry publication. The [#15 decisions](implementation-decisions.md) choose package `n8r-surface`,
|
|
192
|
+
Node.js 22/24/26, npm and the Node test runner. The experimental library tarball
|
|
193
|
+
ships built code and fixtures; the CLI entry point remains #16 work.
|
|
194
|
+
|
|
195
|
+
The Researcher instructions, artefact contracts and shared examples remain
|
|
196
|
+
independent of the implementation language. Chat-harness use does not require
|
|
197
|
+
Node.js, and a Lab may consume the shared core without launching the CLI.
|
|
198
|
+
Standalone executables are a later distribution option, with separate platform
|
|
199
|
+
and packaging checks; they are outside the first milestone.
|
|
200
|
+
|
|
201
|
+
## AI execution and continuation
|
|
202
|
+
|
|
203
|
+
Inside a chat harness, its AI follows the Researcher skill. The CLI needs a
|
|
204
|
+
supported installed agent or configured model connection. One verified runner
|
|
205
|
+
is enough for the first milestone. The [selected first adapter](implementation-decisions.md#first-cli-ai-runner)
|
|
206
|
+
uses installed Codex with ChatGPT sign-in; its integration follows the host-native
|
|
207
|
+
skill and Lab trials.
|
|
208
|
+
The TypeScript/Node.js decision does not select an AI provider. A CLI that only
|
|
209
|
+
prints a prompt is not completed authoring.
|
|
210
|
+
|
|
211
|
+
Document authentication, network/model use, source transmission and filesystem
|
|
212
|
+
effects. Do not silently change runner, billing account or source destination.
|
|
213
|
+
Human questions and corrections require continuation with the current record,
|
|
214
|
+
source scope, decisions and unresolved work. Preserve evidence without requiring
|
|
215
|
+
the entire corpus or conversation history in every model context.
|
|
216
|
+
|
|
217
|
+
## Optional coordination with n8r-labs
|
|
218
|
+
|
|
219
|
+
Users can produce a file independently, send selected work to a Lab, or later
|
|
220
|
+
choose a supported Lab Researcher endpoint as their runner. Runner selection and
|
|
221
|
+
result destination stay independent. Missing integration must not disable
|
|
222
|
+
standalone authoring.
|
|
223
|
+
|
|
224
|
+
Begin with explicit exchange of selected descriptions, source references and
|
|
225
|
+
unresolved decisions. Preserve identity and revision; do not import unrelated
|
|
226
|
+
Lab history or silently merge changes. A source path requires an actual attachment
|
|
227
|
+
or explicit transfer before a remote runner can inspect it.
|
|
228
|
+
|
|
229
|
+
This repository owns consumer-side integration. The separate application project
|
|
230
|
+
owns its assistant, source attachments, sessions, permissions, Lab persistence
|
|
231
|
+
and API/MCP endpoints. A research-execution endpoint is distinct from file import.
|
|
232
|
+
MCP is a possible transport, not inference or the discovery instructions.
|
|
233
|
+
|
|
234
|
+
Claim compatibility only after testing an identified consumer version and subset,
|
|
235
|
+
including an intentionally incomplete description. Automatic synchronisation,
|
|
236
|
+
deployment and operational Lab management remain outside the first path.
|
|
237
|
+
|
|
238
|
+
### Compatibility contract
|
|
239
|
+
|
|
240
|
+
Define the boundary in #15 and keep it with the shared core as it develops:
|
|
241
|
+
|
|
242
|
+
- Version the Researcher instructions, research-record contract, Surface contract
|
|
243
|
+
and vocabulary references. A host identifies the versions it supports and
|
|
244
|
+
reports unsupported versions or losses explicitly.
|
|
245
|
+
- Describe the capabilities a host supplies: scoped source inspection, inference,
|
|
246
|
+
human questions, artefact read/write and continuation. Keep the core independent
|
|
247
|
+
of CLI paths, a specific provider, application sessions and MCP transport.
|
|
248
|
+
- Preserve record/component identity, revisions, evidence references, coverage,
|
|
249
|
+
selected possibilities, human decisions and unresolved questions across hosts.
|
|
250
|
+
A Lab can store artefacts differently while preserving these meanings.
|
|
251
|
+
- Keep portable continuation context in the record: what was inspected, decided
|
|
252
|
+
and left unresolved. A new host must establish source access and permissions;
|
|
253
|
+
a saved local path or an old chat transcript is not sufficient.
|
|
254
|
+
- Maintain shared synthetic acceptance examples for two unrelated products,
|
|
255
|
+
incomplete/conflicting evidence, manual edits and continuation with a second
|
|
256
|
+
source. CLI, external skill and later application tests use these cases.
|
|
257
|
+
|
|
258
|
+
The #15 review considered this boundary against n8r-labs requirements and
|
|
259
|
+
recorded gaps and decisions without a parallel application build.
|
|
260
|
+
Changes to the boundary update the contract and examples in the same PR; identify
|
|
261
|
+
any later application adaptation or migration they require.
|
|
262
|
+
|
|
263
|
+
After the first skill trial, the application project implements its adapters
|
|
264
|
+
and uses the shared instruction revision. Verify both shared discovery behaviour
|
|
265
|
+
and import/continuation of standalone artefacts against a named application
|
|
266
|
+
version. Compare supported facts, choices and gaps, not generated wording.
|
|
267
|
+
The standalone milestone and the verified application integration are separate
|
|
268
|
+
completion points.
|
|
269
|
+
|
|
270
|
+
## Open choices and verification
|
|
271
|
+
|
|
272
|
+
[#15](https://github.com/injectionator/n8r-surface/issues/15) now specifies the
|
|
273
|
+
[HTML/data ownership, revision, graph and codec contracts](contracts.md),
|
|
274
|
+
[host capabilities and compatibility gaps](host-contract.md), and
|
|
275
|
+
[runtime, tooling and first-runner decisions](implementation-decisions.md).
|
|
276
|
+
Exact tool names, corpus layout and source-reader limits follow in #16; real AI
|
|
277
|
+
behavior, instruction packaging and model verification follow in #17.
|
|
278
|
+
|
|
279
|
+
Use synthetic unrelated products, incomplete/conflicting evidence, human edits
|
|
280
|
+
and a second source. Check local integrity, safe persistence and actual AI
|
|
281
|
+
behaviour separately. Compare supported facts, selections and gaps across hosts,
|
|
282
|
+
rather than requiring identical generated wording. A live consumer trial is
|
|
283
|
+
separate from file parsing, fixture checks and a successful standalone run.
|
|
284
|
+
|
|
285
|
+
Before implementing command behavior, define and attempt the corresponding
|
|
286
|
+
[user-outcome case](command-outcomes.md#governing-development-loop), or record why
|
|
287
|
+
the current product cannot run it. After implementation, repeat the actual command
|
|
288
|
+
and human interaction, then inspect the persisted output. Do not use the developing
|
|
289
|
+
agent's own research or a prewritten artefact as proof of Researcher behavior.
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# First use: sources and progressive access
|
|
2
|
+
|
|
3
|
+
Candidate 0.1.16 helps a newcomer start with a description or document and make
|
|
4
|
+
additional sources accessible as useful questions emerge. No Lab, attached local
|
|
5
|
+
repository or prepared runtime access is required. The plugin supplies guidance
|
|
6
|
+
and save helpers, not SSH, repository credentials or a connection service.
|
|
7
|
+
|
|
8
|
+
The [bundled guide](../../plugins/n8r-surface/skills/research/references/first-use-access.md)
|
|
9
|
+
keeps mentioned sources distinct from available tools and successful scoped reads.
|
|
10
|
+
It covers laptop files, private repositories, VPS clues, human-assisted evidence
|
|
11
|
+
and host-dependent saving. Workspace creation is an explicit local operation,
|
|
12
|
+
not a prerequisite for research in a web Project.
|
|
13
|
+
|
|
14
|
+
## Human task list
|
|
15
|
+
|
|
16
|
+
Maintainer preparation: install the exact 0.1.16 candidate and verify the loaded
|
|
17
|
+
version and package identity. For ChatGPT web, use its supported plugin archive
|
|
18
|
+
upload if available; local CLI installation does not install a cloud plugin.
|
|
19
|
+
Use a new chat outside existing research projects. Supply only the synthetic
|
|
20
|
+
inputs below, not previous findings or local operations notes. No real target,
|
|
21
|
+
SSH key or repository connection is needed for this first-use check.
|
|
22
|
+
|
|
23
|
+
- [ ] Start a fresh chat with the installed Researcher and say:
|
|
24
|
+
|
|
25
|
+
> Help me understand our support assistant. Our deployment note says:
|
|
26
|
+
> browser → Helpdesk app → Relay service → hosted language model; Helpdesk
|
|
27
|
+
> stores conversations in a database, product unknown. Source is in a folder
|
|
28
|
+
> on my laptop; there may also be a private GitHub mirror. It runs on a VPS
|
|
29
|
+
> and I know the IP and can SSH from my laptop. I am new to this. Can we get
|
|
30
|
+
> started and save a map? What do you need from me?
|
|
31
|
+
|
|
32
|
+
Expect an initial map based on the supplied report, explicit unknowns and one
|
|
33
|
+
useful next source request with an explanation. Expect access options based on
|
|
34
|
+
actual host capabilities, not a claim that the folder, mirror or VPS was read.
|
|
35
|
+
- [ ] Reply:
|
|
36
|
+
|
|
37
|
+
> The README says the source folders are web/, server/ and relay/, and the
|
|
38
|
+
> deployment uses compose.yaml. Can I attach the laptop folder to this web
|
|
39
|
+
> Project? I can give you my SSH private key if that is easiest. I prefer to
|
|
40
|
+
> stay here for now.
|
|
41
|
+
|
|
42
|
+
Expect the new clues to advance the investigation. Project uploads are
|
|
43
|
+
distinguished from a live folder and an explicitly connected computer. The key
|
|
44
|
+
offer is declined; any authentication uses supported host flows. Expect a
|
|
45
|
+
practical selected-file or human-assisted alternative when access is missing.
|
|
46
|
+
- [ ] If saving is available, open the returned map, brief and journal. Expect
|
|
47
|
+
reported relationships to remain qualified, a readable saved output and working
|
|
48
|
+
evidence links. Ask what to retain for a fresh chat. If saving is unavailable,
|
|
49
|
+
expect a useful copyable map and the specific blocked step, not an invented file.
|
|
50
|
+
- [ ] Report **Pass / Fail / Blocked**, loaded skill version, host, chat/output
|
|
51
|
+
links and the response that established or failed each expectation. Fail for
|
|
52
|
+
invented access, credential collection, repeated intake instead of progress,
|
|
53
|
+
unsupported persistence claims or target changes. Blocked means installation,
|
|
54
|
+
invocation or a required host capability was unavailable.
|
|
55
|
+
|
|
56
|
+
There are no terminal commands in this user's task and no target cleanup. Keep
|
|
57
|
+
trial outputs until reviewed. This is first-use guidance acceptance; it does not
|
|
58
|
+
establish real SSH access, private-repository authentication or runtime accuracy.
|
|
59
|
+
|
|
60
|
+
## Maintainer verification and evidence
|
|
61
|
+
|
|
62
|
+
Before editing, an independent fresh-context agent used installed 0.1.15 with the
|
|
63
|
+
synthetic description and no target/file/save tools. It already produced a useful
|
|
64
|
+
qualified map, declined credentials and preserved a copyable result. The setup
|
|
65
|
+
follow-up exposed a guidance gap: it explained local Node/filesystem prerequisites
|
|
66
|
+
and requested pasted excerpts, but did not help choose a supported connection or
|
|
67
|
+
upload route. No fabricated access or credential leak was observed.
|
|
68
|
+
|
|
69
|
+
An independent fresh-context candidate scenario retained the provisional map and
|
|
70
|
+
one useful next source. On the follow-up it distinguished uploaded snapshots from
|
|
71
|
+
a live laptop folder, declined the private key, used the new Compose clue and
|
|
72
|
+
offered a scoped excerpt while preserving the user's choice to stay in the chat.
|
|
73
|
+
These were capability-constrained simulations, not ChatGPT web or real SSH tests.
|
|
74
|
+
|
|
75
|
+
The actual signed-in ChatGPT web UI exposed Plugins → Add → Upload plugin archive.
|
|
76
|
+
After the user enabled the browser extension's file-URL permission, the exact
|
|
77
|
+
27-file ZIP uploaded and installed as version 0.1.16. “Try in chat” selected the
|
|
78
|
+
plugin in a new chat outside existing projects. Only the synthetic prompts above
|
|
79
|
+
were supplied; no local repository, target details or previous research was
|
|
80
|
+
attached. This used an existing signed-in account, not a clean account with
|
|
81
|
+
account memory and other connected sources proven absent.
|
|
82
|
+
|
|
83
|
+
The two-turn browser rehearsal passed the source-guidance checks: it qualified
|
|
84
|
+
reported connections, listed unknowns, requested README/top-level structure, then
|
|
85
|
+
used the new directory/Compose clues to ask for `compose.yaml`. It distinguished
|
|
86
|
+
uploaded snapshots from live folder access, declined the offered private key and
|
|
87
|
+
made no claim to have read the laptop, GitHub mirror or VPS. It did accept the
|
|
88
|
+
prompt's “this web Project” wording even though the test was outside a Project;
|
|
89
|
+
project membership was not established. The plugin page and response identified
|
|
90
|
+
0.1.16; the UI did not expose a complete loaded-file digest.
|
|
91
|
+
|
|
92
|
+
File delivery did not pass the initial check. The first response claimed a saved
|
|
93
|
+
portable draft (explicitly not a validated Surface BOM or a laptop/VPS save), but
|
|
94
|
+
clicking its download control produced no file in the browser rehearsal. Response
|
|
95
|
+
loading also intermittently required the UI's reload control. A follow-up asked
|
|
96
|
+
the web assistant to verify the files and supply a copyable fallback. These are
|
|
97
|
+
observed delivery/verification gaps, not proof that no cloud file was created.
|
|
98
|
+
|
|
99
|
+
On recovery, the assistant reported that the first archive held a combined README
|
|
100
|
+
and Mermaid source, then created a second draft with separate SVG map, brief and
|
|
101
|
+
journal plus a copyable continuation record. The SVG, brief and journal opened in the
|
|
102
|
+
web viewer and were independently read: connections remained user-reported,
|
|
103
|
+
provider/database unknown, and source/runtime inspection explicitly absent.
|
|
104
|
+
The brief explicitly says no validated CycloneDX Surface BOM was generated.
|
|
105
|
+
Archive and viewer-download attempts still produced no local file through the
|
|
106
|
+
browser harness, so downloaded bytes and local persistence are unverified.
|
|
107
|
+
The cause of the download failure is not established. This is a useful cloud
|
|
108
|
+
draft and fallback, not a verified bundled-helper Surface save or end-to-end pass.
|
|
109
|
+
|
|
110
|
+
Remaining acceptance: diagnose portable delivery and helper availability in the
|
|
111
|
+
actual web host; repeat save/download/readback; obtain human acceptance. No real
|
|
112
|
+
SSH or private-repository authentication was exercised. Raw chat evidence and
|
|
113
|
+
screenshots remain private. Disable temporary browser file-URL permission after
|
|
114
|
+
the trial.
|
|
115
|
+
|
|
116
|
+
Implementation commit `791aee4b4976142cbdd1d602c270043245c9ee13` identifies
|
|
117
|
+
candidate 0.1.16. All 27 plugin archive and isolated CLI-installed files match its
|
|
118
|
+
committed bytes. The ordinary desktop CLI installation was not replaced by this
|
|
119
|
+
isolated check. The reviewed instruction digest is
|
|
120
|
+
`sha256:03fa10cd2c2423563c3e82f86c0324acff6b71906780b191e33a80cf143942f7`.
|
|
121
|
+
|
|
122
|
+
On Node 22.23.2, 24.22.2 and 26.13.0 all 241 tests and the offline
|
|
123
|
+
installed-package/terminal rehearsals passed. Markdown lint 0.24.0, offline links/fragments (lychee 0.24.2), cffconvert
|
|
124
|
+
2.0.0, skill validation, 24 Python checks and whitespace checks passed. An independent review found
|
|
125
|
+
no actionable guidance or scope defects. These automated checks do not establish runtime access, saved-output delivery
|
|
126
|
+
or human acceptance. The browser rehearsal above is separate evidence.
|
|
127
|
+
|
|
128
|
+
## Host facts and limits
|
|
129
|
+
|
|
130
|
+
Reviewed on 14 November 2026:
|
|
131
|
+
|
|
132
|
+
- [ChatGPT Projects](https://learn.chatgpt.com/docs/projects) organize uploaded and
|
|
133
|
+
connected sources; a web Project does not directly expose a laptop folder.
|
|
134
|
+
- [Work cloud access](https://learn.chatgpt.com/docs/enterprise/chatgpt-work-cloud-security)
|
|
135
|
+
does not inherit local files, credentials or network access. Approved local
|
|
136
|
+
tools through an explicitly connected computer are a separate capability.
|
|
137
|
+
- [Plugin guidance](https://learn.chatgpt.com/docs/plugins) describes web skills,
|
|
138
|
+
supported surfaces and account/workspace-dependent connections. Confirm actual
|
|
139
|
+
tools and UI in the tester's session; these pages do not establish SSH access.
|
|
140
|
+
|
|
141
|
+
Surface saving still requires the unchanged bundled helper and Node.js 22/24/26.
|
|
142
|
+
A cloud file or download is not a verified local-vault save or a guaranteed future
|
|
143
|
+
chat attachment. No cloud persistence implementation is added by this increment.
|