@datafog/fogclaw 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/backlog-tools.d.ts +57 -0
  3. package/dist/backlog-tools.d.ts.map +1 -0
  4. package/dist/backlog-tools.js +173 -0
  5. package/dist/backlog-tools.js.map +1 -0
  6. package/dist/backlog.d.ts +82 -0
  7. package/dist/backlog.d.ts.map +1 -0
  8. package/dist/backlog.js +169 -0
  9. package/dist/backlog.js.map +1 -0
  10. package/dist/config.d.ts.map +1 -1
  11. package/dist/config.js +6 -0
  12. package/dist/config.js.map +1 -1
  13. package/dist/index.d.ts +2 -1
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +87 -2
  16. package/dist/index.js.map +1 -1
  17. package/dist/message-sending-handler.d.ts +2 -1
  18. package/dist/message-sending-handler.d.ts.map +1 -1
  19. package/dist/message-sending-handler.js +5 -1
  20. package/dist/message-sending-handler.js.map +1 -1
  21. package/dist/tool-result-handler.d.ts +2 -1
  22. package/dist/tool-result-handler.d.ts.map +1 -1
  23. package/dist/tool-result-handler.js +5 -1
  24. package/dist/tool-result-handler.js.map +1 -1
  25. package/dist/types.d.ts +15 -0
  26. package/dist/types.d.ts.map +1 -1
  27. package/dist/types.js.map +1 -1
  28. package/openclaw.plugin.json +11 -1
  29. package/package.json +7 -1
  30. package/.github/workflows/harness-docs.yml +0 -30
  31. package/AGENTS.md +0 -28
  32. package/docs/DATA.md +0 -28
  33. package/docs/DESIGN.md +0 -17
  34. package/docs/DOMAIN_DOCS.md +0 -30
  35. package/docs/FRONTEND.md +0 -24
  36. package/docs/OBSERVABILITY.md +0 -32
  37. package/docs/PLANS.md +0 -171
  38. package/docs/PRODUCT_SENSE.md +0 -20
  39. package/docs/RELIABILITY.md +0 -60
  40. package/docs/SECURITY.md +0 -52
  41. package/docs/design-docs/core-beliefs.md +0 -17
  42. package/docs/design-docs/index.md +0 -8
  43. package/docs/generated/README.md +0 -36
  44. package/docs/generated/memory.md +0 -1
  45. package/docs/plans/2026-02-16-fogclaw-design.md +0 -172
  46. package/docs/plans/2026-02-16-fogclaw-implementation.md +0 -1606
  47. package/docs/plans/README.md +0 -15
  48. package/docs/plans/active/2026-02-16-feat-openclaw-official-submission-plan.md +0 -386
  49. package/docs/plans/active/2026-02-17-feat-release-fogclaw-via-datafog-package-plan.md +0 -328
  50. package/docs/plans/active/2026-02-17-feat-submit-fogclaw-to-openclaw-plan.md +0 -244
  51. package/docs/plans/active/2026-02-17-feat-tool-result-pii-scanning-plan.md +0 -293
  52. package/docs/plans/tech-debt-tracker.md +0 -42
  53. package/docs/plugins/fogclaw.md +0 -101
  54. package/docs/runbooks/address-review-findings.md +0 -30
  55. package/docs/runbooks/ci-failures.md +0 -46
  56. package/docs/runbooks/code-review.md +0 -34
  57. package/docs/runbooks/merge-change.md +0 -28
  58. package/docs/runbooks/pull-request.md +0 -45
  59. package/docs/runbooks/record-evidence.md +0 -43
  60. package/docs/runbooks/reproduce-bug.md +0 -42
  61. package/docs/runbooks/respond-to-feedback.md +0 -42
  62. package/docs/runbooks/review-findings.md +0 -31
  63. package/docs/runbooks/submit-openclaw-plugin.md +0 -68
  64. package/docs/runbooks/update-agents-md.md +0 -59
  65. package/docs/runbooks/update-domain-docs.md +0 -42
  66. package/docs/runbooks/validate-current-state.md +0 -41
  67. package/docs/runbooks/verify-release.md +0 -69
  68. package/docs/specs/2026-02-16-feat-openclaw-official-submission-spec.md +0 -115
  69. package/docs/specs/2026-02-17-feat-outbound-message-pii-scanning-spec.md +0 -93
  70. package/docs/specs/2026-02-17-feat-submit-fogclaw-to-openclaw.md +0 -125
  71. package/docs/specs/2026-02-17-feat-tool-result-pii-scanning-spec.md +0 -122
  72. package/docs/specs/README.md +0 -5
  73. package/docs/specs/index.md +0 -8
  74. package/docs/spikes/README.md +0 -8
  75. package/fogclaw.config.example.json +0 -33
  76. package/scripts/ci/he-docs-config.json +0 -123
  77. package/scripts/ci/he-docs-drift.sh +0 -112
  78. package/scripts/ci/he-docs-lint.sh +0 -234
  79. package/scripts/ci/he-plans-lint.sh +0 -354
  80. package/scripts/ci/he-runbooks-lint.sh +0 -445
  81. package/scripts/ci/he-specs-lint.sh +0 -258
  82. package/scripts/ci/he-spikes-lint.sh +0 -249
  83. package/scripts/runbooks/select-runbooks.sh +0 -154
  84. package/src/config.ts +0 -183
  85. package/src/engines/gliner.ts +0 -240
  86. package/src/engines/regex.ts +0 -71
  87. package/src/extract.ts +0 -98
  88. package/src/index.ts +0 -381
  89. package/src/message-sending-handler.ts +0 -87
  90. package/src/redactor.ts +0 -51
  91. package/src/scanner.ts +0 -196
  92. package/src/tool-result-handler.ts +0 -133
  93. package/src/types.ts +0 -75
  94. package/tests/config.test.ts +0 -78
  95. package/tests/extract.test.ts +0 -185
  96. package/tests/gliner.test.ts +0 -289
  97. package/tests/message-sending-handler.test.ts +0 -244
  98. package/tests/plugin-smoke.test.ts +0 -250
  99. package/tests/redactor.test.ts +0 -320
  100. package/tests/regex.test.ts +0 -345
  101. package/tests/scanner.test.ts +0 -348
  102. package/tests/tool-result-handler.test.ts +0 -329
  103. package/tsconfig.json +0 -20
@@ -1,328 +0,0 @@
1
- ---
2
- slug: 2026-02-17-feat-release-fogclaw-via-datafog-package
3
- status: active
4
- phase: plan
5
- plan_mode: execution
6
- detail_level: more
7
- priority: high
8
- owner: DataFog Platform Team
9
- ---
10
-
11
- # Enable an interim DataFog-owned `@datafog/fogclaw` release path
12
-
13
- This Plan is a living document. The sections `Progress`, `Surprises & Discoveries`, `Decision Log`, `Outcomes & Retrospective`, and `Revision Notes` must be kept current as work proceeds.
14
-
15
- This plan is maintained in accordance with `docs/PLANS.md`.
16
-
17
- ## Purpose / Big Picture
18
-
19
- Users should be able to install and use FogClaw today from a DataFog-owned namespace without waiting for official OpenClaw plugin listing approval. The result should be a published package `@datafog/fogclaw` that can be installed with `openclaw plugins install @datafog/fogclaw`, loads correctly through OpenClaw plugin discovery, and exposes the same guardrail + tool behavior that was already validated for the merged FogClaw line.
20
-
21
- ## Progress
22
-
23
- - [x] (2026-02-17T18:52:00Z) P1 [M1] Confirmed baseline package identity references and package files in the DataFog repo.
24
- - [x] (2026-02-17T18:53:00Z) P2 [M1] Updated `package.json` and user docs to `@datafog/fogclaw`.
25
- - [x] (2026-02-17T18:54:00Z) P3 [M1] Updated `package-lock` metadata and refreshed scope for build/release artifacts.
26
- - [x] (2026-02-17T18:55:00Z) P4 [M2] Re-ran build/test/smoke + `npm pack --json` + `npm publish --dry-run` validations.
27
- - [x] (2026-02-17T18:56:00Z) P5 [M2] Verified `openclaw plugins install` against the built `datafog-fogclaw-0.1.0.tgz` in a clean runtime; plugin now loads as `fogclaw` with status `loaded` and tools `fogclaw_scan, fogclaw_redact`.
28
- - [x] (2026-02-17T20:33:00Z) P5 [M2] Verified `openclaw plugins install @datafog/fogclaw` resolves to published `0.1.4` in this runtime.
29
- - [x] (2026-02-17T19:27:00Z) P6 [M2] Fixed GLiNER startup blocker in Node by pinning `onnxruntime-web` to `1.21.0`, preventing `./webgpu` export resolution errors from `gliner` in OpenClaw install paths.
30
- - [x] (2026-02-17T19:34:00Z) P6 [M2] Added direct `sharp` dependency `0.34.5` with an override to prevent optional sharp native install failure (`sharp-darwin-arm64v8.node` missing) during OpenClaw install-time dependency bootstrap.
31
- - [x] (2026-02-17T20:29:00Z) P6 [M3] Published the startup hardening update as `@datafog/fogclaw@0.1.4` (OTP already provisioned) and confirmed package availability.
32
- - [x] (2026-02-17T18:56:00Z) P6 [M3] Prepare and execute V1 publish/release of `@datafog/fogclaw`.
33
- - [x] (2026-02-17T18:57:00Z) P7 [M3] Capture release artifacts and update evidence notes; add follow-up for dependency install blocker in OpenClaw install path.
34
-
35
-
36
- ## Surprises & Discoveries
37
-
38
- - Observation: In the DataFog repo, multiple docs and user-facing examples currently point to `@openclaw/fogclaw`, and migration must be done consistently across `README.md`, `docs/plugins/fogclaw.md`, and install examples to avoid user confusion.
39
- Evidence: `rg -n "@openclaw/fogclaw|openclaw plugins install"` in `/Users/sidmohan/Projects/datafog/fogclaw`.
40
-
41
- - Observation: `package-lock.json` pins package metadata to `@openclaw/fogclaw` and must be regenerated after namespace rename.
42
- Evidence: top-level `package-lock.json` package metadata `name` field.
43
-
44
- - Observation: `openclaw plugins install` of a clean extracted `datafog-fogclaw-0.1.0.tgz` now completes successfully on a clean runtime.
45
- Evidence: `openclaw plugins install /Users/sidmohan/Projects/datafog/fogclaw/datafog-fogclaw-0.1.0.tgz`, `openclaw plugins info fogclaw`, and `openclaw plugins list` all report plugin `fogclaw` as `loaded` with tools.
46
-
47
- - Observation: The prior `TypeError: Cannot read properties of undefined (reading 'trim')` install failure was caused by OpenClaw's `registerTool` contract when tool objects omit a top-level `name`.
48
- Evidence: `src/plugins/registry.ts` in OpenClaw (`registerTool` maps `tool.name` without null-guard); fixed in this repository by adding `name` fields to both tool objects.
49
-
50
- - Observation: `openclaw plugins install @datafog/fogclaw` now resolves and installs successfully from npm as version `0.1.4` in this environment.
51
- Evidence: `npm view @datafog/fogclaw@0.1.4` returns `version = '0.1.4'` and `openclaw plugins install @datafog/fogclaw` reports success with plugin `fogclaw` loaded.
52
-
53
- - Observation: GLiNER startup now avoids the `onnxruntime-web/webgpu` exports failure after pinning `onnxruntime-web` to 1.21.0.
54
- Evidence: in install flows, the earlier `./webgpu` subpath export error no longer blocks plugin registration in this environment.
55
- - Observation: optional sharp runtime failures are now mitigated in clean install flows by pinning direct `sharp` 0.34.5; this removes the previously recurrent `Cannot find module '../build/Release/sharp-darwin-arm64v8.node'` warning in OpenClaw plugin install logs.
56
- Evidence: `openclaw plugins install` from `datafog-fogclaw-0.1.4` no longer emits that missing binary warning.
57
- - Observation: Running `pnpm openclaw` from the local OpenClaw source tree can still emit duplicate-plugin warnings when both the source-bundled `fogclaw` extension and installed `~/.openclaw/extensions/fogclaw` are present.
58
- Evidence: this is due discovery order (`global` then `bundled`) and not a packaging defect in `@datafog/fogclaw` when installed in a standard global runtime.
59
-
60
- ## Decision Log
61
-
62
- - Decision: Keep package behavior unchanged while implementing namespace migration and release plumbing.
63
- Rationale: V1 goal is immediate user availability through DataFog namespace, not plugin runtime changes.
64
- Date/Author: 2026-02-17T10:57:00Z / sidmohan
65
-
66
- - Decision: Maintain plugin `id: "fogclaw"` and `openclaw.extensions` compatibility.
67
- Rationale: OpenClaw discovery is keyed by plugin id in manifest and extension path; changing `id` would require user-facing config migration.
68
- Date/Author: 2026-02-17T10:57:00Z / sidmohan
69
-
70
- - Decision: Use `@datafog/fogclaw` for interim installs and document fallback to official listing work separately.
71
- Rationale: This matches the user objective for independently publishable DataFog namespace while official inclusion is pending.
72
- Date/Author: 2026-02-17T10:57:00Z / sidmohan
73
-
74
- - Decision: Keep behavioral compatibility unchanged for the V1 scope.
75
- Rationale: The goal is install-path enablement and namespace migration, not feature changes to detection/redaction behavior.
76
- Date/Author: 2026-02-17T18:57:00Z / sidmohan
77
-
78
- - Decision: Add a targeted registration compatibility fix for OpenClaw API expectations while keeping runtime behavior unchanged.
79
- Rationale: OpenClaw's `registerTool` requires a tool `name` field in object registrations to avoid `trim` crashes; adding `name` fields in FogClaw's tool registrations is a non-functional compatibility patch and required to complete installability.
80
- Date/Author: 2026-02-17T19:08:00Z / sidmohan
81
-
82
- ## Outcomes & Retrospective
83
-
84
- - V1 package identity migration and documentation updates are complete in the DataFog repo with no runtime behavior changes.
85
- - Local validation confirms namespace rename compiles and tests (`npm run build`, `npm run test`, `npm run test:plugin-smoke`) continue to pass.
86
- - `npm pack --json` and `npm publish --dry-run` now emit scoped package metadata under `@datafog/fogclaw`.
87
- - `openclaw plugins install` against a clean temporary state and local `datafog-fogclaw-0.1.0.tgz` now succeeds; `openclaw plugins info fogclaw` shows status `loaded` and tools `fogclaw_scan`, `fogclaw_redact`.
88
- - `openclaw plugins install @datafog/fogclaw` now resolves from npm (`@datafog/fogclaw@0.1.4`) and plugin info/list flows show `fogclaw` as loaded.
89
- - GLiNER may still fallback to regex-only in some environments, but the webgpu export blocker no longer prevents install or plugin registration.
90
- - GLiNER startup now avoids the webgpu export resolution error after pinning `onnxruntime-web` to `1.21.0` in this runtime; fallback behavior remains safe if ONNX still cannot initialize.
91
-
92
-
93
- ## Context and Orientation
94
-
95
- This repository is `/Users/sidmohan/Projects/datafog/fogclaw`.
96
-
97
- Key files:
98
-
99
- - `package.json`: package identity (`name`) and plugin manifest pointer (`openclaw.extensions`).
100
- - `package-lock.json`: locked package metadata used by npm publish and reproducibility checks.
101
- - `openclaw.plugin.json`: plugin manifest required by OpenClaw (`id`, config schema, metadata).
102
- - `dist/index.js`: compiled plugin entrypoint referenced by `openclaw.extensions`.
103
- - `src/index.ts`: plugin registration (`before_agent_start`, `fogclaw_scan`, `fogclaw_redact`).
104
- - `tests/plugin-smoke.test.ts`: local contract check for hook/tool registration.
105
- - `README.md` and `docs/plugins/fogclaw.md`: primary install and usage documentation.
106
- - `/Users/sidmohan/Projects/datafog/openclaw` provides target runtime install behavior for `openclaw plugins install`.
107
-
108
- **OpenClaw install flow (important for this initiative):**
109
- `openclaw plugins install <npm-spec>` invokes `npm pack`, extracts into plugin extension directory, records install metadata, and loads the extracted package through plugin manifest/entrypoint discovery.
110
-
111
- ## Milestones
112
-
113
- ### Milestone 1 — Namespace migration in DataFog repo
114
-
115
- Rename the package to `@datafog/fogclaw` across package metadata and documentation without changing runtime behavior. This milestone exists so users can consistently install the package from DataFog namespace and the published tarball name matches the user-facing command.
116
-
117
- ### Milestone 2 — Validation of local contract and installability
118
-
119
- Prove the renamed package remains install-ready by running build/tests/pack checks and an end-to-end OpenClaw install smoke flow. This milestone ensures compatibility with OpenClaw’s plugin loader and confirms no manifest or entrypoint regressions.
120
-
121
- ### Milestone 3 — Release and evidence publishing
122
-
123
- Publish V1 package release to npm, then record release evidence and update operational/runbook notes so users can reliably install `@datafog/fogclaw` today.
124
-
125
- ## Plan of Work
126
-
127
- Work should proceed in small, testable edits.
128
-
129
- First, update DataFog package metadata and references to the desired scope and verify there are no conflicting names left behind. This includes package name, lockfile metadata, user documentation commands, and plugin docs in the DataFog repo.
130
-
131
- Second, run an installability verification sequence in the same repo: compile and test, generate a dry-run publish artifact, and validate OpenClaw loading behavior from a clean install path using the newly scoped npm spec. For the smoke path, use either a temporary local publish or a pre-release test package if external network restrictions prevent immediate production publish.
132
-
133
- Third, perform the final publish/release steps and capture deterministic artifacts (pack info, version, install command, expected `openclaw plugin` diagnostics) in the plan’s evidence section. Keep open questions explicit if npm publish access/rate-limiting or token setup is an external blocker.
134
-
135
- ## Concrete Steps
136
-
137
- From repo root `/Users/sidmohan/Projects/datafog/fogclaw`:
138
-
139
- 1. Inspect current scope references.
140
-
141
- rg -n "@openclaw/fogclaw|@datafog/fogclaw|openclaw plugins install" README.md package.json package-lock.json docs/plugins/fogclaw.md src docs/PLANS.md
142
-
143
- Expected:
144
-
145
- - Install/documentation references should consistently show `@datafog/fogclaw` (legacy `@openclaw/fogclaw` references would be migration follow-ups).
146
-
147
- 2. Update package identity to DataFog namespace.
148
-
149
- python - <<'PY'
150
- import json
151
- from pathlib import Path
152
- p = Path('package.json')
153
- obj = json.loads(p.read_text())
154
- obj['name'] = '@datafog/fogclaw'
155
- p.write_text(json.dumps(obj, indent=2) + "\n")
156
- print('updated', p)
157
-
158
- p = Path('package-lock.json')
159
- obj = json.loads(p.read_text())
160
- obj['name'] = '@datafog/fogclaw'
161
- if isinstance(obj.get('packages'), dict) and '' in obj['packages']:
162
- obj['packages']['']['name'] = '@datafog/fogclaw'
163
- p.write_text(json.dumps(obj, indent=2) + "\n")
164
- print('updated', p)
165
- PY
166
-
167
- Expected:
168
-
169
- - Both files use `@datafog/fogclaw` as package `name`.
170
- - `package-lock.json` root package and lock metadata are coherent.
171
-
172
- 3. Update install/docs references to the scoped package.
173
-
174
- rg -n "@openclaw/fogclaw|openclaw plugins install @" README.md docs/plugins/fogclaw.md docs/specs/*.md docs/plans/active/*.md
175
-
176
- Then edit all DataFog user-facing examples to:
177
-
178
- - `openclaw plugins install @datafog/fogclaw`
179
-
180
- and adjust standalone import examples if they currently imply `@openclaw/fogclaw` identity.
181
-
182
- Expected:
183
-
184
- - Documentation consistently points users at `@datafog/fogclaw` for interim install path.
185
- - Core plugin `id` and extension path references remain unchanged.
186
-
187
- 4. Rebuild and refresh lock-derived metadata as needed.
188
-
189
- npm install
190
- npm run build
191
- npm test
192
- npm run test:plugin-smoke
193
-
194
- Expected:
195
-
196
- - Build/test suite passes.
197
- - `dist/index.js` and test artifacts remain valid.
198
- - Plugin contract checks still pass.
199
-
200
- 5. Validate package pack shape before publish.
201
-
202
- npm pack --json
203
- npm publish --dry-run
204
-
205
- Expected:
206
-
207
- - Tarball contains `dist/index.js` and `openclaw.plugin.json` and `package.json`.
208
- - No unintended paths (e.g., local `.git`, build cache, editor artifacts) leak into the packed payload.
209
-
210
- 6. Verify install path from OpenClaw using scoped spec on a local/clean extension path.
211
-
212
- openclaw plugins install @datafog/fogclaw
213
- openclaw plugins info fogclaw
214
- openclaw plugins list | rg fogclaw
215
-
216
- Expected:
217
-
218
- - `fogclaw` plugin appears and can be enabled/referenced in OpenClaw config.
219
- - No manifest/schema errors are thrown in plugin load.
220
-
221
- ## Validation and Acceptance
222
-
223
- A completed V1 initiative is successful when all commands below pass in this repo and in an `openclaw` runtime that can install third-party packages.
224
-
225
- - Run:
226
- - `npm install`
227
- - `npm run build`
228
- - `npm test`
229
- - `npm run test:plugin-smoke`
230
- - `npm pack --json`
231
- - `npm publish --dry-run`
232
-
233
- Expect:
234
-
235
- - Plugin build/tests pass.
236
- - Pack metadata is minimal and includes `openclaw.plugin.json` + `dist/index.js`.
237
- - Installability command either succeeds with a published `@datafog/fogclaw` package or demonstrates a reproducible blocker (e.g., publish access) with mitigation.
238
-
239
- - `openclaw plugins install @datafog/fogclaw`
240
- - `openclaw plugins info fogclaw`
241
- - `openclaw plugins list | rg fogclaw`
242
-
243
- Expect:
244
-
245
- - Plugin installation metadata registers as `fogclaw` and lists both hook/tool availability from manifest.
246
- - `openclaw plugins info fogclaw` shows no critical errors.
247
-
248
- ## Idempotence and Recovery
249
-
250
- - Re-running namespace renames is safe if done as a single set of edits (`package.json`, `package-lock.json`, docs).
251
- - If `openclaw plugins install @datafog/fogclaw` cannot run due stale install artifacts, remove the stale extension directory (`~/.openclaw/extensions/fogclaw`) and reinstall from the scoped spec in one flow, keeping the `plugins.entries.fogclaw` config entry intact.
252
- - If `npm publish` is blocked, capture exact npm error + timestamp, resolve token/2FA/access, then rerun from step 5 onward.
253
- - If the package publishes but install fails due manifest mismatch, roll back to previous package version in npm and fix manifest/docs before republishing.
254
-
255
- ## Artifacts and Notes
256
-
257
- - Scope migration evidence:
258
-
259
- package: @datafog/fogclaw
260
- version: 0.1.4
261
- `npm pkg get name` output: `"@datafog/fogclaw"`
262
- `npm pkg get openclaw` output:
263
- `{"extensions":["./dist/index.js"]}`
264
-
265
- - Contract smoke evidence:
266
-
267
- `node - <<'NODE'
268
- import plugin from './dist/index.js';
269
- console.log(typeof plugin?.register, plugin?.id, plugin?.name);
270
- NODE`
271
- => `function fogclaw FogClaw`
272
-
273
- - Reproducibility evidence:
274
- - `npm pack --json` output includes `datafog-fogclaw-0.1.4.tgz` and `openclaw.plugin.json`/`dist/index.js` in file list.
275
- - `npm publish --dry-run` succeeded and produced scoped package manifest notice.
276
-
277
- - Installability evidence:
278
- - `openclaw plugins install @datafog/fogclaw` succeeds in this environment and installs the published `0.1.4` package.
279
- - `openclaw plugins info fogclaw` and `openclaw plugins list | rg fogclaw` confirm plugin status `loaded` and tools `fogclaw_scan`, `fogclaw_redact`.
280
- - GLiNER can return model-backed detections in supported runtimes; plugin registration remains reliable even when inference falls back to regex.
281
-
282
- - `git rev-parse HEAD` (of implementation snapshot): capture before final merge.
283
-
284
-
285
-
286
-
287
- ## Interfaces and Dependencies
288
-
289
- - OpenClaw plugin package contract:
290
- - `package.json` field `openclaw.extensions` still points to `./dist/index.js`.
291
- - `openclaw.plugin.json` remains installable by OpenClaw manifest parser.
292
- - Build and verification commands rely on:
293
- - `typescript`, `vitest`, and Node runtime already present in project.
294
- - Publish path depends on npm credentials and any 2FA / publish policy in DataFog org scope.
295
-
296
- ## Pull Request
297
-
298
- - pr: <url>
299
- - branch:
300
- - commit:
301
- - ci:
302
-
303
- ## Review Findings
304
-
305
- - Pending until review stage.
306
-
307
- ## Verify/Release Decision
308
-
309
- - decision: pending
310
- - date: 2026-02-17T20:33:00Z
311
- - open findings by priority (if any): pending
312
- - evidence:
313
- - installability against clean runtime now succeeds for `openclaw plugins install @datafog/fogclaw` (version `0.1.4`) and `openclaw plugins info/list` confirms `fogclaw` plugin visibility.
314
- - scoped npm package is published and discoverable in registry metadata.
315
- - rollback: revert to previous working scoped package state (or keep changes in branch) if publish credentials/visibility unavailable
316
- - post-release checks:
317
- - `openclaw plugins install @datafog/fogclaw`
318
- - `openclaw plugins info fogclaw`
319
- - `openclaw plugins list | rg fogclaw`
320
- - owner: sidmohan
321
-
322
- ## Revision Notes
323
-
324
- - 2026-02-17T10:57:00Z: Initialized plan for V1 scoped-release path in `@datafog/fogclaw` and documented zero-logic-change constraints for immediate installability milestone.
325
- - 2026-02-17T18:57:00Z: Completed namespace migration in package metadata and install/docs (`package.json`, `package-lock.json`, `README.md`, `docs/plugins/fogclaw.md`). Ran full local validation (`npm run build`, `npm run test`, `npm run test:plugin-smoke`, `npm pack --json`, `npm publish --dry-run`) and prepared release notes.
326
- - 2026-02-17T19:08:00Z: Fixed OpenClaw compatibility in `src/index.ts` by adding explicit `name` fields to `fogclaw_scan` and `fogclaw_redact` tool registrations to avoid undefined `.trim()` during registration; verified `openclaw plugins install` clean-runtime success with local tarball and published package commands (`openclaw plugins install <tgz>/<scoped spec>`, `plugins info`, `plugins list`).
327
- - 2026-02-17T20:31:00Z: Added explicit `modelType: "span-level"` for GLiNER runtime configuration and pinned runtime dependencies (`onnxruntime-web`/`sharp`) so local OpenClaw install path no longer fails at startup from these blockers.
328
- - 2026-02-17T20:33:00Z: Confirmed `@datafog/fogclaw@0.1.4` is published and installable via `openclaw plugins install @datafog/fogclaw` in this environment.
@@ -1,244 +0,0 @@
1
- ---
2
- slug: 2026-02-17-feat-submit-fogclaw-to-openclaw
3
- status: active
4
- phase: plan
5
- plan_mode: execution
6
- detail_level: more
7
- priority: high
8
- owner: sidmohan
9
- ---
10
-
11
- # Submit FogClaw to OpenClaw's official plugin submission path
12
-
13
- This plan is a living document. Keep `Progress`, `Surprises & Discoveries`, `Decision Log`, `Outcomes & Retrospective`, and `Revision Notes` current as work progresses.
14
-
15
- This plan must be maintained in accordance with `docs/PLANS.md`.
16
-
17
- ## Purpose / Big Picture
18
-
19
- The plugin is already merged in `DataFog/fogclaw` and ready for publication. This initiative moves beyond local repository hardening to complete the **official OpenClaw submission process** in the upstream ecosystem, so maintainers and users can discover FogClaw through OpenClaw’s normal plugin intake path.
20
-
21
- After this initiative, a reviewer should be able to find a dedicated upstream OpenClaw PR containing reproducible evidence for plugin loadability, tool/guardrail behavior, and package identity, with clear status and follow-up notes if maintainers request changes.
22
-
23
- ## Progress
24
-
25
- - [x] (2026-02-17T01:56:00Z) P1 [Setup] Create submission intent spec for official OpenClaw side flow in `docs/specs/2026-02-17-feat-submit-fogclaw-to-openclaw.md`.
26
- - [x] (2026-02-17T01:58:00Z) P2 [M1] Read and align the plan against repository conventions (`docs/PLANS.md` + `docs/runbooks/`) and confirm open questions from spec.
27
- - [x] (2026-02-17T02:05:00Z) P3 [M1] Confirm target OpenClaw submission repository/path and required PR checklist/template.
28
- - [x] (2026-02-17T02:20:00Z) P4 [M2] Draft external PR body with reproducible evidence block and maintainer-facing rationale.
29
- - [x] (2026-02-17T02:28:00Z) P5 [M2] Open upstream OpenClaw PR from branch containing only FogClaw submission/supporting docs (`docs/plugins/fogclaw.md`).
30
- - [ ] (2026-02-17T02:40:00Z) P6 [M3] Record maintainer feedback and implement any required follow-up in repository or PR only when explicitly requested.
31
- - [ ] (2026-02-17T02:50:00Z) P7 [M3] Update this plan `Pull Request` and `Verify/Review` sections with final submission state and closeout status.
32
-
33
- ## Surprises & Discoveries
34
-
35
- - Observation: OpenClaw intake guidance is not documented as a dedicated "plugin submission" checklist; the operative path is standard upstream PR flow on `openclaw/openclaw` with the canonical PR template.
36
- Evidence: repo-level review (`.github/pull_request_template.md`) plus `docs/reference/RELEASING.md` plugin scope notes.
37
-
38
- - Observation: `DataFog/fogclaw` is not a fork of `openclaw/openclaw`, so direct cross-repo PR creation from that repo was not possible via `gh`.
39
- Resolution at the time: opened a temporary PR from a personal fork (`#18779`) for speed, then migrated to `DataFog/openclaw` when the org-owned upstream fork became available.
40
-
41
- - Observation: A DataFog-owned OpenClaw fork improves ownership alignment for future external submissions.
42
- Resolution: created `DataFog/openclaw` fork and moved upstream submission PR to come from `DataFog:openclaw-upstream-submission` (PR `#18791`).
43
-
44
- ## Decision Log
45
-
46
- - Decision: Scope this initiative to upstream OpenClaw submission only, with zero functional/plugin code changes.
47
- Rationale: Plugin behavior and API are already stabilized and merged locally; additional code changes would dilute the submission objective and risk destabilizing already verified artifacts.
48
- Date/Author: 2026-02-17T01:58:00Z / sidmohan
49
-
50
- - Decision: Keep `@openclaw/fogclaw` as the canonical package identity and treat manifest evidence (`openclaw.plugin.json`, `dist/index.js`, and install command) as mandatory submission evidence.
51
- Rationale: Submission evidence must be reproducible and match what was already validated in the internal PR phase.
52
- Date/Author: 2026-02-17T01:58:00Z / sidmohan
53
-
54
- - Decision: Use standard upstream PR delivery on `openclaw/openclaw` and open from a true fork rather than the DataFog repo.
55
- Rationale: `DataFog/fogclaw` is not a fork of the target repo, and `gh` blocks non-fork cross-repo PRs with direct refs.
56
- Date/Author: 2026-02-17T02:29:00Z / sidmohan
57
-
58
- - Decision: Prefer a `DataFog`-owned fork (`DataFog/openclaw`) as the canonical upstream fork source for future plugin-submission PRs.
59
- Rationale: Ownership alignment and provenance are clearer for external partner submissions when PRs originate from the company/org fork.
60
- Date/Author: 2026-02-17T02:46:00Z / sidmohan
61
-
62
- ## Outcomes & Retrospective
63
-
64
- - A merged baseline exists in `DataFog/fogclaw` and the next step is organizational rather than technical.
65
- - Submission-specific actions are now separated from detection hardening to reduce rework.
66
-
67
- ## Context and Orientation
68
-
69
- This repository (`/Users/sidmohan/Projects/datafog/fogclaw`) currently contains the source plugin, build outputs configuration, and release evidence updates already merged into `main`.
70
-
71
- Key runtime files are:
72
-
73
- - `src/index.ts`: registers `before_agent_start`, `fogclaw_scan`, and `fogclaw_redact`.
74
- - `openclaw.plugin.json`: plugin manifest used by OpenClaw to discover package entry.
75
- - `package.json`: plugin identity (`name: @openclaw/fogclaw`) and `openclaw.extensions` entry.
76
- - `README.md`: reviewer-facing install/evidence commands.
77
- - `tests/plugin-smoke.test.ts`: non-mocked contract test proving tool and hook behavior on a local mock API.
78
- - `docs/plans/active/2026-02-16-feat-openclaw-official-submission-plan.md`: closed internal submission-readiness initiative details.
79
-
80
- For this initiative, a repository branch/PR in an external OpenClaw repo is an **upstream submission route**: it is the place maintainers expect to receive plugin listing evidence. The core task is therefore documentation and submission logistics, not code edits.
81
-
82
- ## Milestones
83
-
84
- ### Milestone 1 - Confirm upstream submission target and acceptance expectations
85
-
86
- At the end of this milestone, the team has identified exactly where and how OpenClaw accepts plugin submissions and what explicit checklist fields must be present in the upstream PR. This is required before drafting or opening the PR and avoids submitting to the wrong repo/branch.
87
-
88
- ### Milestone 2 - Prepare and open the upstream OpenClaw PR
89
-
90
- At the end of this milestone, a ready-to-review OpenClaw PR exists with clear install and verification evidence. The PR body should include commands and expected output and point to this repo’s validated artifact path. The branch should contain only submission-facing changes if any are required, not detection logic changes.
91
-
92
- ### Milestone 3 - Maintain submission loop and close evidence handoff
93
-
94
- At the end of this milestone, maintainer feedback is either satisfied or clearly documented as a blocker with exact follow-up action. This plan is updated with final PR status, and the submission outcome is captured for handoff or continue-work.
95
-
96
- ## Plan of Work
97
-
98
- The work begins by confirming the exact OpenClaw repository path for official plugin submissions. If the target and PR template are known from existing policy, proceed to drafting the upstream PR body.
99
-
100
- Draft a clean upstream submission body in local notes, ensuring it contains explicit commands and expected outputs from this repository’s `main` branch state. Include the merge commit reference and package identity evidence (`npm pkg get openclaw`, smoke import check from `dist/index.js`, and test status).
101
-
102
- Open the upstream PR with a title and body that maps directly to maintainer review needs, avoiding implementation detail beyond what was already merged internally. If no additional documentation changes are required locally, this milestone should avoid new feature edits.
103
-
104
- If maintainers request adjustments, isolate required follow-up work to the smallest possible set. If changes are non-code metadata tasks (for example: clarifying submission checklist text), prefer direct PR updates; if code/manifest edits are requested, open a follow-up branch with precise evidence.
105
-
106
- ## Concrete Steps
107
-
108
- From repo root `/Users/sidmohan/Projects/datafog/fogclaw`:
109
-
110
- 1) Confirm local state and current merged commit hash:
111
-
112
- git log --oneline --max-count=3
113
-
114
- Expected (example pattern):
115
-
116
- <hash> docs(plan): record PR merge completion on main
117
- 3deae34 Merge pull request #1 from DataFog/openclaw-plugin-submission
118
-
119
- 2) Validate submission evidence locally one more time:
120
-
121
- npm test
122
- npm run build
123
- npm run test:plugin-smoke
124
- npm pkg get openclaw
125
- node - <<'NODE'
126
- import plugin from './dist/index.js';
127
- console.log(typeof plugin?.register === 'function', plugin?.id, plugin?.name);
128
- NODE
129
-
130
- Expected:
131
-
132
- Test and build complete successfully.
133
- npm pkg get openclaw returns { "extensions": ["./dist/index.js"] }.
134
- node import prints `true fogclaw FogClaw`.
135
-
136
- 3) Capture upstream submission inputs:
137
-
138
- openclaw-target=<openclaw-repo-path>
139
- openclaw-pr-title="feat(openclaw): official fogclaw plugin submission"
140
-
141
- Then prepare PR body fields including: package ID, install command, evidence command list, and maintainer-impact notes.
142
-
143
- 4) Open upstream PR (using OpenClaw submission target):
144
-
145
- gh pr create --repo <openclaw-target> --base main --head <your-branch> --title "$openclaw-pr-title" --body-file <generated-body>
146
-
147
- Expected:
148
-
149
- PR URL printed and state set to open.
150
-
151
- 5) Track review and iterate:
152
-
153
- gh pr view --repo <openclaw-target> --json number,title,state,reviewDecision,url,headRefName,baseRefName
154
- gh pr checks --repo <openclaw-target> --watch
155
-
156
- Expected:
157
-
158
- Visible PR state and any required checks or maintainer feedback.
159
-
160
- ## Validation and Acceptance
161
-
162
- A successful outcome for this initiative is: the upstream submission PR is open in the official OpenClaw path and contains reproducible proof that the plugin package is installable and contract-safe.
163
-
164
- Specifically:
165
-
166
- - The PR body includes install and verification commands from this merged plugin state.
167
- - Evidence output matches this repo’s local validations (tests, build, smoke, package manifest path).
168
- - No code changes are introduced without a maintainer-triggered request.
169
- - If maintainer asks for changes, they are closed with a targeted follow-up and documented in this plan.
170
-
171
- ## Idempotence and Recovery
172
-
173
- If the upstream target path is wrong, update only the submission-path variables and rerun steps 3–5. If review feedback requires code edits, apply minimal patches, rerun the same local evidence commands, and either amend or recreate the upstream PR as needed. If a submission PR was opened incorrectly, close it with a short note and open a corrected PR to avoid mixed evidence.
174
-
175
- Rollback during this initiative is low-risk: no functional code changes are planned, so revert only submission artifacts or follow-up docs after maintainer feedback confirmation.
176
-
177
- ## Artifacts and Notes
178
-
179
- - Internal merge evidence already exists in `docs/plans/active/2026-02-16-feat-openclaw-official-submission-plan.md` and includes:
180
- - `npm test` run success
181
- - `npm run build` success
182
- - `npm run test:plugin-smoke` pass
183
- - `npm pkg get openclaw` and import smoke output
184
-
185
- - Upstream PR status:
186
- - PR `#18779` was created from a temporary personal fork and then superseded by PR `#18791` from `DataFog/openclaw` to align with official ownership.
187
- - PR `#18791` is now the active upstream request with submission body + reproducible evidence.
188
- - Target repository: `openclaw/openclaw` (main branch).
189
- - Required template source: `.github/pull_request_template.md`.
190
- - Plugin release scope constraints used from `docs/reference/RELEASING.md` (npm plugin scope + existing plugin list expectations).
191
-
192
- - Registry/installability note:
193
- - `npm view @openclaw/fogclaw version` currently returns `E404` (package not yet visible in registry from this environment). Actual runtime/installability remains coupled to maintainer publish flow. This is intentionally tracked as evidence gap outside plugin logic scope.
194
-
195
- ## Interfaces and Dependencies
196
-
197
- No new runtime interfaces are introduced in this initiative. The key artifacts to reference are:
198
-
199
- - `package.json` `openclaw.extensions` + `name`.
200
- - `openclaw.plugin.json`.
201
- - `README.md` evidence section (already updated).
202
- - `tests/plugin-smoke.test.ts` for local behavioral proof.
203
- - GitHub CLI (`gh`) for PR operations.
204
-
205
- The external OpenClaw PR should reference these repo files without changing their internals in this phase.
206
-
207
- ## Pull Request
208
-
209
- - pr: https://github.com/openclaw/openclaw/pull/18791
210
- - branch: DataFog:openclaw-upstream-submission
211
- - commit: 2609f9838 (fork branch)
212
- - ci: initiated (openclaw/pull/18791 CI: docs-scope, check-docs, secrets passed; several workflows still queued for label/conformance/format checks at creation time)
213
-
214
- ## Review Findings
215
-
216
- - PR #18779 was intentionally closed and superseded.
217
- - PR #18791 is now active and in maintainer triage.
218
- - Pending: check for checklist/approval or requested follow-up once review starts.
219
-
220
- ## Verify/Release Decision
221
-
222
- - decision: pending (upstream PR open; final release decision deferred to maintainer review)
223
- - date: 2026-02-17T02:35:00Z
224
- - open findings by priority (if any): pending
225
- - evidence:
226
- - `npm test`
227
- - `pnpm build`
228
- - `npm run test:plugin-smoke`
229
- - `npm pkg get openclaw`
230
- - `node` import smoke (`true fogclaw FogClaw`)
231
- - upstream PR created: `https://github.com/openclaw/openclaw/pull/18791`
232
- - CI snapshot at submit time: `check-docs` / `docs-scope` / `secrets` passed; `label`, `label-issues`, `formal_conformance`, `no-tabs` checks still queued
233
- - rollback:
234
- - Close/recreate PR if maintainers request intake-path correction.
235
- - post-release checks:
236
- - monitor review comments and any requested follow-up changes.
237
- - once approved, confirm plugin docs/listing + release status in upstream merge checks.
238
- - owner: sidmohan
239
-
240
- ## Revision Notes
241
-
242
- - 2026-02-17T01:58:00Z: Initialized plan from spec `2026-02-17-feat-submit-fogclaw-to-openclaw`. Reason: transition intent to upstream OpenClaw submission as the remaining official readiness step.
243
- - 2026-02-17T02:28:00Z: Opened initial upstream submission PR `https://github.com/openclaw/openclaw/pull/18779` (temporary personal-fork variant) with evidence-first PR body and `docs/plugins/fogclaw.md` content only.
244
- - 2026-02-17T02:47:00Z: Created official DataFog upstream fork `https://github.com/DataFog/openclaw` and moved submission PR ownership to `https://github.com/openclaw/openclaw/pull/18791` (source `DataFog:openclaw-upstream-submission`); closed PR #18779 as superseded.