@n8r/surface 0.1.0-experimental.2 → 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.
Files changed (118) hide show
  1. package/README.md +30 -4
  2. package/dist/cli.js +174 -22
  3. package/dist/codec.d.ts +2 -0
  4. package/dist/codec.js +22 -7
  5. package/dist/codex.d.ts +1 -1
  6. package/dist/codex.js +26 -10
  7. package/dist/contracts.d.ts +108 -2
  8. package/dist/cyclonedx-schemas/bom-1.7.schema.json +6700 -0
  9. package/dist/cyclonedx-schemas/cryptography-defs.schema.json +576 -0
  10. package/dist/cyclonedx-schemas/jsf-0.82.schema.json +240 -0
  11. package/dist/cyclonedx-schemas/spdx.schema.json +786 -0
  12. package/dist/cyclonedx-validation.d.ts +1 -0
  13. package/dist/cyclonedx-validation.js +45 -0
  14. package/dist/html.js +27 -3
  15. package/dist/recent.d.ts +9 -0
  16. package/dist/recent.js +71 -0
  17. package/dist/revisions.js +42 -0
  18. package/dist/skill-artifacts-cli.d.ts +1 -0
  19. package/dist/skill-artifacts-cli.js +13 -0
  20. package/dist/skill-artifacts.d.ts +15 -0
  21. package/dist/skill-artifacts.js +184 -0
  22. package/dist/skill-cyclonedx.d.ts +26 -0
  23. package/dist/skill-cyclonedx.js +214 -0
  24. package/dist/skill-presentation.d.ts +10 -0
  25. package/dist/skill-presentation.js +108 -0
  26. package/dist/skill-surface-cli.d.ts +1 -0
  27. package/dist/skill-surface-cli.js +37 -0
  28. package/dist/skill-surface-store.d.ts +7 -0
  29. package/dist/skill-surface-store.js +126 -0
  30. package/dist/surface-bom.d.ts +73 -0
  31. package/dist/surface-bom.js +139 -0
  32. package/dist/surface-draft.d.ts +6 -3
  33. package/dist/surface-draft.js +20 -3
  34. package/dist/surface-instructions.d.ts +2 -1
  35. package/dist/surface-instructions.js +10 -1
  36. package/dist/surface-overview.d.ts +15 -0
  37. package/dist/surface-overview.js +86 -0
  38. package/dist/surface-store.d.ts +5 -7
  39. package/dist/surface-store.js +34 -2
  40. package/dist/surface-view.d.ts +3 -0
  41. package/dist/surface-view.js +50 -0
  42. package/dist/validate.js +298 -0
  43. package/docs/n8r-surface/cli-bundles.md +72 -0
  44. package/docs/n8r-surface/command-outcomes.md +151 -4
  45. package/docs/n8r-surface/contracts.md +10 -0
  46. package/docs/n8r-surface/critical-path.md +21 -0
  47. package/docs/n8r-surface/first-use-access.md +143 -0
  48. package/docs/n8r-surface/first-use-overview.md +262 -0
  49. package/docs/n8r-surface/getting-started.md +55 -88
  50. package/docs/n8r-surface/guided-journey-verification.md +137 -0
  51. package/docs/n8r-surface/implementation-decisions.md +14 -14
  52. package/docs/n8r-surface/instance-first-research.md +209 -0
  53. package/docs/n8r-surface/npm-distribution.md +39 -69
  54. package/docs/n8r-surface/npm-release.md +141 -14
  55. package/docs/n8r-surface/product-direction.md +327 -0
  56. package/docs/n8r-surface/researcher-skill.md +105 -51
  57. package/docs/n8r-surface/security-assurance-strategy.md +267 -0
  58. package/docs/n8r-surface/skill-bom-verification.md +142 -0
  59. package/docs/n8r-surface/skill-cyclonedx-verification.md +144 -0
  60. package/docs/n8r-surface/skill-cyclonedx.md +85 -0
  61. package/docs/n8r-surface/skill-manual.md +129 -0
  62. package/docs/n8r-surface/skill-surface-artifacts.md +234 -0
  63. package/docs/n8r-surface/skill-usefulness-verification.md +135 -0
  64. package/docs/n8r-surface/skill-workspace-automation.md +359 -0
  65. package/docs/n8r-surface/surface-description-contract.md +224 -0
  66. package/docs/n8r-surface/surface-descriptions.md +173 -0
  67. package/docs/n8r-surface/surface-relationships.md +231 -0
  68. package/docs/n8r-surface/tester-candidate.md +158 -0
  69. package/docs/n8r-surface/versioning.md +55 -66
  70. package/docs/n8r-surface/workspace-human-check.md +101 -0
  71. package/docs/n8r-surface/workspace-installation.md +68 -0
  72. package/docs/n8r-surface/workspace-verification.md +350 -0
  73. package/docs/n8r-surface/workspace.md +83 -0
  74. package/examples/researcher/README.md +8 -0
  75. package/examples/researcher/cyclonedx/configured/README.md +7 -0
  76. package/examples/researcher/cyclonedx/configured/manifest.json +10 -0
  77. package/examples/researcher/cyclonedx/configured/mapping.json +323 -0
  78. package/examples/researcher/cyclonedx/configured/surface-records.json +1275 -0
  79. package/examples/researcher/cyclonedx/configured/surface.cdx.json +79 -0
  80. package/examples/researcher/descriptions/README.md +29 -0
  81. package/examples/researcher/descriptions/bound-r1.json +141 -0
  82. package/examples/researcher/descriptions/bound-r2.json +153 -0
  83. package/examples/researcher/descriptions/capability.json +167 -0
  84. package/examples/researcher/descriptions/research-r1.json +153 -0
  85. package/examples/researcher/descriptions/research-r2.json +157 -0
  86. package/examples/researcher/descriptions/sources.md +24 -0
  87. package/examples/researcher/relationships/README.md +34 -0
  88. package/examples/researcher/relationships/bound-r1.json +346 -0
  89. package/examples/researcher/relationships/bound-r2.json +358 -0
  90. package/examples/researcher/relationships/capability.json +325 -0
  91. package/examples/researcher/relationships/config/assistant.env.example +4 -0
  92. package/examples/researcher/relationships/research-r1.json +300 -0
  93. package/examples/researcher/relationships/research-r2.json +304 -0
  94. package/examples/researcher/relationships/sources.md +38 -0
  95. package/examples/researcher/surface-bom/README.md +17 -0
  96. package/examples/researcher/surface-bom/initial.cdx.json +188 -0
  97. package/package.json +1 -1
  98. package/plugins/n8r-surface/.codex-plugin/plugin.json +2 -2
  99. package/plugins/n8r-surface/LICENSING.md +3 -0
  100. package/plugins/n8r-surface/plugin.json +2 -2
  101. package/plugins/n8r-surface/skills/research/SKILL.md +79 -38
  102. package/plugins/n8r-surface/skills/research/references/artifacts.md +152 -0
  103. package/plugins/n8r-surface/skills/research/references/cyclonedx.md +207 -0
  104. package/plugins/n8r-surface/skills/research/references/discovery-map.md +20 -2
  105. package/plugins/n8r-surface/skills/research/references/examples/bound-r1.json +346 -0
  106. package/plugins/n8r-surface/skills/research/references/examples/capability.json +325 -0
  107. package/plugins/n8r-surface/skills/research/references/examples/research-r1.json +300 -0
  108. package/plugins/n8r-surface/skills/research/references/examples/surface.cdx.json +188 -0
  109. package/plugins/n8r-surface/skills/research/references/first-use-access.md +97 -0
  110. package/plugins/n8r-surface/skills/research/references/first-use-overview.md +101 -0
  111. package/plugins/n8r-surface/skills/research/references/instance-first.md +125 -0
  112. package/plugins/n8r-surface/skills/research/references/working-notes.md +6 -1
  113. package/plugins/n8r-surface/skills/research/references/workspace.md +89 -0
  114. package/plugins/n8r-surface/skills/research/scripts/THIRD-PARTY-NOTICES.txt +273 -0
  115. package/plugins/n8r-surface/skills/research/scripts/artifacts.mjs +8348 -0
  116. package/plugins/n8r-surface/skills/research/scripts/cyclonedx.mjs +28113 -0
  117. package/plugins/n8r-surface/skills/research/scripts/surface.mjs +27800 -0
  118. package/plugins/n8r-surface/skills/research/scripts/workspace.mjs +120 -0
@@ -0,0 +1,101 @@
1
+ # A useful first security overview
2
+
3
+ For broad initial source research, help the reader understand the application
4
+ before explaining the saved format. Preserve a narrow question when one is given.
5
+ This is a bounded first pass, not an exhaustive audit or vulnerability verdict.
6
+
7
+ ## Research and record
8
+
9
+ - Explain what the application does in one plain sentence. Put this in the focus
10
+ component's standard `description`; name that component as the presentation
11
+ focus using the [optional node hints](cyclonedx.md#overview-presentation-hints).
12
+ - Group major internal functions and external integrations only where evidence
13
+ establishes their placement relative to the application. A browser is not the
14
+ backend; a supported database option is not an installed store. Preserve shared
15
+ identities and paths across groups. Leave unresolved placement unclassified.
16
+ - Record a few consequential observations as `finding` journal entries with
17
+ `status: done`, evidence references, and a `reason` explaining why each matters.
18
+ Keep the finding and its limitation together. A source-backed execution path is
19
+ an investigation lead, not a demonstrated vulnerability or runtime guarantee.
20
+ Do not promote an unsupported inference just to fill the opening.
21
+ - Make coverage legible across **identity**, **authorization**, **data handling**,
22
+ **storage**, **secrets**, **exposure** and **observability**. Use named `coverage`
23
+ and `gap` strings, such as “Identity: supported sign-in options inspected” or
24
+ “Observability: runtime trace coverage not researched.” These labels describe
25
+ inspected work, not control effectiveness. Mark unresearched areas explicitly;
26
+ do not expand a first pass into seven exhaustive investigations.
27
+ - For integrations within scope, research supported options separately from
28
+ intended selections, safe configuration evidence and dated runtime observations.
29
+ “Identity provider unknown” alone does not describe supported authentication.
30
+ If support was not researched, say so and identify the next useful source read.
31
+ - Keep model-request control points distinct from actual tool execution. Preserve
32
+ browser-originated traffic, backend extensions and scheduled execution contexts
33
+ when evidenced; explain their consequences without presuming every app has them.
34
+
35
+ The generated brief uses descriptions, groups, findings, coverage/gaps and open
36
+ next steps. The generated HTML puts a connected overview before full relationships,
37
+ source evidence and investigation history. Do not hand-edit these views instead of
38
+ recording the relevant evidence in the BOM.
39
+
40
+ ## Scope once, exceptions where needed
41
+
42
+ State common source/deployment limits in `scope`. Keep per-relationship conditions,
43
+ conflicts, bypasses, selection evidence and observations intact. Use `note` for
44
+ what is distinctive about a path instead of repeating generic deployment caveats.
45
+ The concise brief links to full relationship details; brevity must not erase a
46
+ consequential exception from its associated finding.
47
+
48
+ ## Invite the next decision
49
+
50
+ Match the next step to the established investigation context:
51
+
52
+ - **Source checkout only:** recommend one concrete source-level trace, naming the
53
+ entry point, authorization boundary and question it can answer. Keep deployment
54
+ settings unverified. Research can continue without a daemon, deployed instance
55
+ or chosen provider. Ask about intended setup only if the user wants planning.
56
+ - **Intended setup:** record choices as dated user-basis evidence, then explain
57
+ what configuration evidence would establish them later.
58
+ - **Identified deployment:** inspect only the permitted target and relevant safe
59
+ fields. Keep configuration and dated runtime observations separate.
60
+ - **Context unclear:** continue useful source research; before requesting runtime
61
+ access, establish whether the user wants source analysis, planning or inspection
62
+ of an existing deployment. A checked-out Compose file identifies a declaration,
63
+ not a running target. An available Docker daemon is not a target identity.
64
+
65
+ ## Keep the successor current and the brief short
66
+
67
+ Before each save, reconcile the current scope, findings, coverage, gaps and actions:
68
+
69
+ 1. Record new evidence with its date and applicability. Preserve old observations
70
+ and accepted decisions in the journal and predecessor; do not rewrite their text.
71
+ 2. Mark obsolete entries `superseded` and link a replacement with `supersedes`.
72
+ Mark completed actions `done`; mark out-of-scope work `deferred` with a reason.
73
+ For example, reachable runtime evidence supersedes an unavailable-daemon blocker
74
+ and completes the retry action; it does not establish a deployment's presence.
75
+ 3. Replace obsolete current scope/gap strings in the successor. Preserve their
76
+ historical content in dated journal entries/evidence. Do not append contradictory
77
+ current statements and leave the reader to determine which applies.
78
+ 4. Keep one recommended action `active`, with a clear result and access requirement.
79
+ Other genuinely useful choices can remain open or deferred in the journal.
80
+ 5. Read the generated brief as a newcomer. Aim for roughly 400–700 words: a short
81
+ current scope, major areas, a few current implications, concise coverage/gaps
82
+ and one next action. Consolidate overlapping findings using supersession while
83
+ preserving each consequential exception and its evidence. A word target never
84
+ justifies dropping a limitation or inventing a summary.
85
+
86
+ The renderer shows at most twelve nodes, five current findings (most recently
87
+ recorded, not severity-ranked), seven coverage items, seven gaps and one action
88
+ (active first, otherwise recorded order). It explicitly links additional items to
89
+ full HTML detail. Complete finding text, reasons and evidence stay together;
90
+ long individual entries are not silently truncated. Prioritise and consolidate
91
+ research content before saving; list limits alone do not guarantee a short brief.
92
+ The journal and full map retain the complete record, including superseded entries.
93
+ This skill does not configure or deploy the system.
94
+
95
+ End the chat with a short statement of what the research clarified, links to the
96
+ brief and map (journal/detail links can follow), and the next useful question.
97
+ Keep format mechanics underneath. Explain the architecture/research BOM's bounded
98
+ machine-readable value when relevant: it is not a comprehensive dependency SBOM;
99
+ standard dependencies cover only the selected dependency subset. Other consumers
100
+ may ignore the profile's paths and evidence. Conventional SBOM linkage is future
101
+ work, not a claim made by this increment.
@@ -0,0 +1,125 @@
1
+ # Investigate an identified running composition
2
+
3
+ Use this path when the user starts with an instance, service URL or deployed
4
+ composition, or continues source research with permitted instance evidence.
5
+ A source checkout can describe one component without describing the whole system.
6
+ Keep source-only work on its existing path when no instance investigation is asked
7
+ for. This guide adds no access adapter, credential store or runtime dependency.
8
+
9
+ For a newcomer or an inaccessible source, use [first-use access](first-use-access.md)
10
+ to help establish one useful source at a time. A short reported system description
11
+ is enough to begin; a complete access setup is not an entry requirement.
12
+
13
+ ## Use the host harness
14
+
15
+ Codex/ChatGPT supplies the tools and access; the skill supplies the investigation
16
+ method. Discover the relevant tools actually available in this session. Prefer a
17
+ scoped connector or documented read API, then permitted browser or shell access.
18
+ Do not assume a tool name, a terminal, SSH, a local clone or a connected account.
19
+ A URL identifies a source; a successful scoped read establishes access.
20
+
21
+ Start with the supplied target and question. State the selected environment and
22
+ read-only coverage, carrying forward existing authorization. Ask only for missing
23
+ information needed to identify the target or permitted access. Do not make users
24
+ choose evidence categories or reproduce information an available source supplies.
25
+
26
+ | Source | Useful host operation | Identity and limit to retain |
27
+ | --- | --- | --- |
28
+ | Remote repository | Read selected files at a pinned revision through the available connector/API. | Repository, revision, file and inspected ranges; returned text may not be original file bytes. |
29
+ | Local checkout | Read relevant files and working-copy identity. | Commit plus differences and hashes of inspected bytes; not deployed build identity. |
30
+ | Document or URL | Read the selected page/section using its available connector or browser. | Document revision/product version, capture time and section; newer docs may not apply to the target. |
31
+ | Instance configuration | Read safe fields from the selected instance/admin view. | Target identity, setting scope and time; stored settings may not be loaded. |
32
+ | Runtime metadata | Filter to the target and project allowlisted fields before output. | Instance/container/process identity, image/build identity, state and capture time. |
33
+ | Existing observations | Read a permitted redacted event/trace or supplied observation. | Request correlation, participating identities, effective setup and coverage; missing events do not prove absence. |
34
+
35
+ If a source is unavailable, retain the partial graph and identify the consequence:
36
+ for example, storage is configured but current use is unverified. A permission
37
+ refusal is not a prompt to bypass that route. Ask for an authorized source or
38
+ human-supplied redacted evidence when needed. Do not sign in for the user, extract
39
+ sessions, install tools or start services to fill the gap. Follow the discovery
40
+ guide's [live inspection rules](discovery-map.md#inspect-live-connections-with-the-human).
41
+
42
+ ## Follow the composition
43
+
44
+ Begin with the selected instance's identity and entry point, then follow evidence
45
+ of relevant connections. An endpoint binding can lead to a separate gateway,
46
+ inference provider, identity service, storage or telemetry destination. Determine
47
+ its role before deciding which source file, document or live view to read next.
48
+ Do not replace a custom endpoint with a familiar vendor because its protocol is
49
+ compatible. Do not add roadmap components or enumerate unrelated host resources.
50
+
51
+ Use repositories and operational documents to explain those discovered components.
52
+ An old deployment recipe is a navigation clue until current evidence supports it.
53
+ Match product documentation to the installed version; mismatches remain visible.
54
+ Record supported alternatives separately from the selected instance paths.
55
+
56
+ For each consequential claim, keep the evidence level precise:
57
+
58
+ - Source describes support or a code path; it does not establish selection.
59
+ - A safe binding establishes configured selection, with its setting scope.
60
+ - Process/container state establishes presence at a time, not connection use.
61
+ - A response establishes reachability for that operation and vantage point.
62
+ - A correlated request/trace can establish the exercised portion of a path,
63
+ within its identity, time and coverage limits.
64
+
65
+ A mounted file hash identifies inspected bytes, not necessarily the bytes loaded
66
+ by a running process. A model name in configuration is not catalog availability
67
+ or inference. A health response does not exercise storage, authentication or
68
+ model requests. Similarly named fields in public config and process environment
69
+ may have different meanings: inspect their version-specific implementation before
70
+ calling them equivalent or conflicting. Keep separate login, application actor,
71
+ provider credential and upstream identity boundaries when evidence supports them.
72
+
73
+ Read-only means the operation's behavior, not its HTTP verb. A diagnostic GET
74
+ may start a worker, refresh credentials or run a connection test. Use known passive
75
+ operations or existing evidence; leave uncertain operations uncalled. Research
76
+ does not send prompts or invoke tools to make an edge observable. Those are
77
+ separately authorized testing tasks.
78
+
79
+ ## Retain evidence and continue
80
+
81
+ Keep the journal current while working when saving is authorized. State what was
82
+ read, what it established and the next useful question; the user can redirect or
83
+ stop at a useful partial result. Save through the existing [Surface helper](cyclonedx.md).
84
+ No special whole-Surface observed state is needed: use per-relationship evidence
85
+ and dated observations, with unknown composition and explicit coverage/gaps.
86
+
87
+ Keep source identity distinct from captured evidence identity. If a connector
88
+ returns rendered or normalized text, hash a retained safe projection only as that
89
+ projection, not as the original remote file. Never fabricate unavailable hashes,
90
+ versions or observation times. Preserve actual source capture times separately
91
+ from the time the BOM was saved. Do not add transport newlines before hashing
92
+ source bytes. See [evidence identity](cyclonedx.md#evidence-identity-and-readback).
93
+
94
+ On revisit, read the supplied predecessor, re-establish permitted access and
95
+ compare equivalent observations for the same target. Explain each material result
96
+ in ordinary language:
97
+
98
+ - **Target change:** comparable evidence establishes a changed setting/build or
99
+ relationship. Say which prior conclusions or tests may need revisiting.
100
+ - **Newly learned fact:** previously unread evidence adds detail; discovery time
101
+ alone does not establish when the target changed.
102
+ - **Unchanged checked fact:** the same scoped fact was checked again, at a new
103
+ time; do not generalize to unchecked parts of the system.
104
+ - **Lost coverage:** access or evidence is missing now; retain prior dated facts
105
+ without presenting them as freshly verified or treating the component as removed.
106
+ - **Conflict:** evidence disagrees or identities are inconsistent; preserve both
107
+ and name the evidence needed to resolve it. A mutable image tag is not a digest.
108
+
109
+ These are explanations, not new schema enums. Retain stable component identities,
110
+ previous bytes, decisions and observations. Update current scope/gaps and next
111
+ steps; keep old findings in history. A telemetry setting first read today may
112
+ predate the baseline, and a file timestamp alone does not prove historical use.
113
+
114
+ When consolidating earlier findings into a current journal summary, carry the
115
+ original evidence IDs for every retained configuration/source claim. A new
116
+ runtime-state check supports only its inspected facts; it cannot substitute for
117
+ those sources. Open the summary's evidence links during readback and check each
118
+ claim, even when the underlying graph still has correct provenance. Correct an
119
+ incomplete saved summary in a successor, preserving the earlier revision.
120
+
121
+ Finish with the useful composition, consequential uncertainties and one practical
122
+ next investigation with its access requirement. Independently read back the saved
123
+ BOM and generated brief/map/journal. Check that the key claims remain distinguishable
124
+ without this chat and that referenced retained evidence is locatable. State any
125
+ host persistence or navigation limitation rather than claiming a missing save.
@@ -7,7 +7,12 @@ retain the same evidence and limitations. Do not impose a large empty template.
7
7
 
8
8
  ## Where notes live
9
9
 
10
- Use a user-selected destination first. When an applicable vault convention places
10
+ Use a user-selected destination first. For work explicitly scoped to a recognized
11
+ Surface workspace, keep new notes under `research/<source-slug>/` within that
12
+ workspace, creating directories only on an authorized save. Do not redirect that
13
+ work to a global vault or the default below. When continuing a supplied note,
14
+ retain its folder unless the user asks to move it. Workspace setup itself creates
15
+ no notes or content directories. When an applicable vault convention places
11
16
  Surface descriptions under `surfaces/<source-slug>/`, propose a numbered file
12
17
  such as `surface-draft-001.md` there. A save offer does not create directories or
13
18
  files; wait for acceptance. Without that convention, use the default below for
@@ -0,0 +1,89 @@
1
+ # Workspace operations
2
+
3
+ Use this mode for setup, repeated setup, readiness and fresh-chat recognition.
4
+ A workspace is a user-owned folder, independent of a vault, source checkout,
5
+ Lab or app project. The only initial file is `.n8r/workspace.json`.
6
+
7
+ If the user means starting research in a web Project rather than creating a local
8
+ folder, use [first-use access](first-use-access.md) and begin from supplied sources.
9
+ If explicit local setup is requested but the host cannot access a persistent local
10
+ filesystem or supported Node runtime, report that operation blocked. Keep useful
11
+ source research available; do not ask for a laptop path the host cannot access.
12
+
13
+ ## Run the shared helper
14
+
15
+ Requires a local persistent filesystem and Node.js 22, 24 or 26 on macOS/Linux.
16
+ Use the helper **from this installed skill**, resolving its absolute path relative
17
+ to this reference, not from a developer checkout. Invoke it through `node`:
18
+
19
+ ```sh
20
+ node /installed/skill/scripts/workspace.mjs inspect /selected/workspace
21
+ node /installed/skill/scripts/workspace.mjs setup /selected/workspace --purpose 'Investigate LibreChat'
22
+ ```
23
+
24
+ The paths above are placeholders. Quote actual paths and supplied text safely;
25
+ never interpolate untrusted metadata into shell code. `inspect` only reads.
26
+ `setup` requires the user's explicit setup request. Supply `--name` only if the
27
+ user supplied a display name; otherwise the folder name is used. Supply a brief
28
+ nonsecret `--purpose` from the stated intent when available; it is optional.
29
+ Do not put credentials, private bindings or absolute source paths in metadata.
30
+ No naming/schema questionnaire is needed. Ask for a destination only when the
31
+ user's selected/current folder cannot be established.
32
+
33
+ If Node, the helper, local access or persistent storage is unavailable, explain
34
+ that blocker and the concrete prerequisite. Do not install a runtime, recreate
35
+ the helper's filesystem logic by hand, or claim a download is a local workspace.
36
+ A host without shell/local persistence cannot perform this workspace operation.
37
+ The standalone research CLI and Labs do not yet expose this capability.
38
+
39
+ ## Interpret the result
40
+
41
+ The helper prints one JSON object with `status`, `message`, absolute `directory`
42
+ when available, and `record` for a supported workspace. Exit 0 means created or
43
+ recognized; exit 3 means missing, empty or awaiting a destination choice; exit 2
44
+ means invalid input, malformed/unsupported metadata, conflict or I/O failure.
45
+ These are helper results, not permission to expand the task.
46
+
47
+ - `created`: report the actual location and a useful next research action. The
48
+ helper has read back the complete record. No research has started.
49
+ - `recognized`: reuse the saved ID, name and optional purpose without rewriting
50
+ or asking again. Report readiness for research, not proof of prior research or
51
+ a configured target. For a readiness question, offer a next action based on
52
+ saved purpose or relevant existing notes without starting it. Read notes only
53
+ as needed; do not infer findings from metadata or generic filenames.
54
+ - `missing` / `empty`: inspection found no workspace. Explain this; recognition
55
+ alone does not authorize creation. An explicit setup request can call `setup`.
56
+ - `needs-choice`: explain that files already exist and ask “Initialize here, or
57
+ use another folder?” Make no writes before the choice. Only an explicit
58
+ initialize-here choice permits `setup PATH --adopt` (with supplied name/purpose).
59
+ If another folder is chosen, run normal setup there without `--adopt`.
60
+ - `malformed` / `unsupported` / `conflict`: explain the helper's specific reason
61
+ and offer another destination or separately requested repair assessment. Make
62
+ no changes; no automatic migration, downgrade, replacement or cleanup.
63
+ - `invalid-input` / `io-error`: report the specific limitation; do not claim
64
+ success. An interrupted operation may leave metadata staging files. Inspect
65
+ read-only if needed; repair is separate and never implied by a retry.
66
+
67
+ For recognized/created results, identify the saved format and stable ID without
68
+ requiring the user to understand their encoding. Keep the interaction short.
69
+ Filesystem creation does not attach the folder to an app project. Say attachment
70
+ is separate; only claim it if a supported host action actually occurred. Setup
71
+ does not require attachment, Git, credentials, global settings or a vault.
72
+ Do not create README, AGENTS.md, `.gitkeep`, models or content directories during
73
+ setup. Research remains a separate requested action.
74
+
75
+ ## Shared metadata meaning
76
+
77
+ `n8r.workspace/1` is independent of plugin and AI Surface Model versions. The
78
+ helper validates a JSON object with that exact `format`, generated UUID v4 `id`,
79
+ nonempty text `name`, and optional text `purpose`. Unknown fields are preserved
80
+ and confer no capabilities. The ID survives setup repetition, rename, move and
81
+ fresh sessions. Invalid JSON/required fields are malformed; a different format
82
+ token is unsupported. Recognition is always read-only, never repair.
83
+
84
+ The bundled `scripts/workspace.mjs` exports `validateWorkspace`,
85
+ `inspectWorkspace` and `setupWorkspace` for future consumers. It owns the
86
+ filesystem decisions; do not fork them into host-specific implementations.
87
+ It publishes complete metadata without overwriting a target. Interrupted staging
88
+ is never accepted as a valid record. Concurrent writers, adversarial filesystem
89
+ mutation, migration and power-loss durability are not supported guarantees.
@@ -0,0 +1,273 @@
1
+ Bundled third-party code and schemas
2
+
3
+ CycloneDX 1.7 schemas: OWASP Foundation / CycloneDX contributors, Apache-2.0.
4
+ Source commit 4b3f59453366e27c8073fd24e98bf21ef8892c8e. See bundled LICENSE for Apache-2.0 terms.
5
+
6
+ ajv 8.20.0 (MIT)
7
+ The MIT License (MIT)
8
+
9
+ Copyright (c) 2015-2021 Evgeny Poberezkin
10
+
11
+ Permission is hereby granted, free of charge, to any person obtaining a copy
12
+ of this software and associated documentation files (the "Software"), to deal
13
+ in the Software without restriction, including without limitation the rights
14
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15
+ copies of the Software, and to permit persons to whom the Software is
16
+ furnished to do so, subject to the following conditions:
17
+
18
+ The above copyright notice and this permission notice shall be included in all
19
+ copies or substantial portions of the Software.
20
+
21
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27
+ SOFTWARE.
28
+
29
+
30
+
31
+ ajv-formats 3.0.1 (MIT)
32
+ MIT License
33
+
34
+ Copyright (c) 2020 Evgeny Poberezkin
35
+
36
+ Permission is hereby granted, free of charge, to any person obtaining a copy
37
+ of this software and associated documentation files (the "Software"), to deal
38
+ in the Software without restriction, including without limitation the rights
39
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
40
+ copies of the Software, and to permit persons to whom the Software is
41
+ furnished to do so, subject to the following conditions:
42
+
43
+ The above copyright notice and this permission notice shall be included in all
44
+ copies or substantial portions of the Software.
45
+
46
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
47
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
48
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
49
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
50
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
51
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
52
+ SOFTWARE.
53
+
54
+
55
+ ajv-formats-draft2019 1.6.1 (MIT)
56
+ MIT License
57
+
58
+ Copyright (c) 2020 Carlo Q
59
+
60
+ Permission is hereby granted, free of charge, to any person obtaining a copy
61
+ of this software and associated documentation files (the "Software"), to deal
62
+ in the Software without restriction, including without limitation the rights
63
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
64
+ copies of the Software, and to permit persons to whom the Software is
65
+ furnished to do so, subject to the following conditions:
66
+
67
+ The above copyright notice and this permission notice shall be included in all
68
+ copies or substantial portions of the Software.
69
+
70
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
71
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
72
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
73
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
74
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
75
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
76
+ SOFTWARE.
77
+
78
+
79
+ extend 3.0.2 (MIT)
80
+ The MIT License (MIT)
81
+
82
+ Copyright (c) 2014 Stefan Thomas
83
+
84
+ Permission is hereby granted, free of charge, to any person obtaining
85
+ a copy of this software and associated documentation files (the
86
+ "Software"), to deal in the Software without restriction, including
87
+ without limitation the rights to use, copy, modify, merge, publish,
88
+ distribute, sublicense, and/or sell copies of the Software, and to
89
+ permit persons to whom the Software is furnished to do so, subject to
90
+ the following conditions:
91
+
92
+ The above copyright notice and this permission notice shall be
93
+ included in all copies or substantial portions of the Software.
94
+
95
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
96
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
97
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
98
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
99
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
100
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
101
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
102
+
103
+
104
+
105
+ fast-deep-equal 3.1.3 (MIT)
106
+ MIT License
107
+
108
+ Copyright (c) 2017 Evgeny Poberezkin
109
+
110
+ Permission is hereby granted, free of charge, to any person obtaining a copy
111
+ of this software and associated documentation files (the "Software"), to deal
112
+ in the Software without restriction, including without limitation the rights
113
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
114
+ copies of the Software, and to permit persons to whom the Software is
115
+ furnished to do so, subject to the following conditions:
116
+
117
+ The above copyright notice and this permission notice shall be included in all
118
+ copies or substantial portions of the Software.
119
+
120
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
121
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
122
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
123
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
124
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
125
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
126
+ SOFTWARE.
127
+
128
+
129
+ fast-uri 3.1.9 (BSD-3-Clause)
130
+ Copyright (c) 2011-2021, Gary Court until https://github.com/garycourt/uri-js/commit/a1acf730b4bba3f1097c9f52e7d9d3aba8cdcaae
131
+ Copyright (c) 2021-present The Fastify team <https://github.com/fastify/fastify#team>
132
+ All rights reserved.
133
+
134
+ Redistribution and use in source and binary forms, with or without
135
+ modification, are permitted provided that the following conditions are met:
136
+ * Redistributions of source code must retain the above copyright
137
+ notice, this list of conditions and the following disclaimer.
138
+ * Redistributions in binary form must reproduce the above copyright
139
+ notice, this list of conditions and the following disclaimer in the
140
+ documentation and/or other materials provided with the distribution.
141
+ * The names of any contributors may not be used to endorse or promote
142
+ products derived from this software without specific prior written
143
+ permission.
144
+
145
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
146
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
147
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
148
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY
149
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
150
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
151
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
152
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
153
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
154
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
155
+
156
+ * * *
157
+
158
+ The complete list of contributors can be found at:
159
+ - https://github.com/garycourt/uri-js/graphs/contributors
160
+
161
+ json-schema-traverse 1.0.0 (MIT)
162
+ MIT License
163
+
164
+ Copyright (c) 2017 Evgeny Poberezkin
165
+
166
+ Permission is hereby granted, free of charge, to any person obtaining a copy
167
+ of this software and associated documentation files (the "Software"), to deal
168
+ in the Software without restriction, including without limitation the rights
169
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
170
+ copies of the Software, and to permit persons to whom the Software is
171
+ furnished to do so, subject to the following conditions:
172
+
173
+ The above copyright notice and this permission notice shall be included in all
174
+ copies or substantial portions of the Software.
175
+
176
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
177
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
178
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
179
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
180
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
181
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
182
+ SOFTWARE.
183
+
184
+
185
+ nearley 2.20.1 (MIT)
186
+ The MIT License (MIT)
187
+
188
+ Copyright (c) 2014, 2015, 2016, 2017, 2018, 2019 Kartik Chandra, Tim Radvan
189
+
190
+ Permission is hereby granted, free of charge, to any person obtaining a copy
191
+ of this software and associated documentation files (the "Software"), to deal
192
+ in the Software without restriction, including without limitation the rights
193
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
194
+ copies of the Software, and to permit persons to whom the Software is
195
+ furnished to do so, subject to the following conditions:
196
+
197
+ The above copyright notice and this permission notice shall be included in all
198
+ copies or substantial portions of the Software.
199
+
200
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
201
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
202
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
203
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
204
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
205
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
206
+ SOFTWARE.
207
+
208
+
209
+ schemes 1.4.0 (MIT)
210
+
211
+ (The MIT License)
212
+
213
+ Copyright (c) 2015 Peter Müller <munter@fumle.dk>
214
+
215
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
216
+
217
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
218
+
219
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
220
+
221
+
222
+ smtp-address-parser 1.1.1 (MIT)
223
+ MIT License
224
+
225
+ Copyright (c) 2021 Gene Hightower
226
+
227
+ Permission is hereby granted, free of charge, to any person obtaining a copy
228
+ of this software and associated documentation files (the "Software"), to deal
229
+ in the Software without restriction, including without limitation the rights
230
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
231
+ copies of the Software, and to permit persons to whom the Software is
232
+ furnished to do so, subject to the following conditions:
233
+
234
+ The above copyright notice and this permission notice shall be included in all
235
+ copies or substantial portions of the Software.
236
+
237
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
238
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
239
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
240
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
241
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
242
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
243
+ SOFTWARE.
244
+
245
+
246
+ uri-js 4.4.1 (BSD-2-Clause)
247
+ Copyright 2011 Gary Court. All rights reserved.
248
+
249
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
250
+
251
+ 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
252
+
253
+ 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
254
+
255
+ THIS SOFTWARE IS PROVIDED BY GARY COURT "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
256
+
257
+ The views and conclusions contained in the software and documentation are those of the authors and should not be interpreted as representing official policies, either expressed or implied, of Gary Court.
258
+
259
+
260
+ yaml 2.9.1 (ISC)
261
+ Copyright Eemeli Aro <eemeli@gmail.com>
262
+
263
+ Permission to use, copy, modify, and/or distribute this software for any purpose
264
+ with or without fee is hereby granted, provided that the above copyright notice
265
+ and this permission notice appear in all copies.
266
+
267
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
268
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
269
+ FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
270
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
271
+ OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
272
+ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
273
+ THIS SOFTWARE.