skillwiki 0.10.110 → 0.10.111
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/dist/{chunk-5MV5SSRM.js → chunk-5IBLXGLY.js} +5 -3
- package/dist/chunk-6OQLBNKR.js +250 -0
- package/dist/chunk-GQWCTJTU.js +55 -0
- package/dist/{chunk-QU2CKXM4.js → chunk-HBJLFPQP.js} +91 -199
- package/dist/chunk-I2J3IJB7.js +54 -0
- package/dist/{chunk-WPJHDRTP.js → chunk-I6IRJCUJ.js} +12 -57
- package/dist/{chunk-NA3TZ4JN.js → chunk-JQV5KNPT.js} +8 -6
- package/dist/chunk-KWEYA3OE.js +60 -0
- package/dist/{chunk-KX5Y3GSX.js → chunk-MRPJ7X7W.js} +5 -3
- package/dist/{chunk-6X6PPQNI.js → chunk-OJJBZDPR.js} +162 -296
- package/dist/chunk-OSL4J7GF.js +32 -0
- package/dist/chunk-PYPPG7RF.js +126 -0
- package/dist/chunk-QESNTTVY.js +50 -0
- package/dist/chunk-TDBUJUYH.js +109 -0
- package/dist/{chunk-R2DJ7IJ5.js → chunk-UIEQIJXP.js} +5 -336
- package/dist/chunk-X5GL2FCU.js +344 -0
- package/dist/chunk-ZRGZBAVS.js +98 -0
- package/dist/cli.js +308 -298
- package/dist/{index-projection-6XGESSHV.js → index-projection-2K672CBO.js} +5 -3
- package/dist/journal-QU5IDXQF.js +13 -0
- package/dist/{managed-write-preflight-JPOBVVSU.js → managed-write-preflight-GRSHQYKC.js} +7 -4
- package/dist/migrate-PIB4QA54.js +21 -0
- package/dist/ready-S7F53Q2D.js +9 -0
- package/dist/runtime-GLMI5OCT.js +15 -0
- package/dist/skillwiki-mcp.js +12 -7
- package/dist/sources-D2MGP246.js +10 -0
- package/dist/upload-HTE62TOV.js +14 -0
- package/dist/watcher-MHG46J3R.js +616 -0
- package/docs/clip-outbox.md +119 -0
- package/package.json +5 -1
- package/skills/.claude-plugin/plugin.json +1 -1
- package/skills/.codex-plugin/plugin.json +1 -1
- package/skills/.cursor-plugin/plugin.json +1 -1
- package/skills/package.json +1 -1
- package/templates/launchd/com.karlchow.skillwiki-clip-outbox.plist +12 -13
- package/dist/sources-CLOF5VAT.js +0 -9
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# Clip-outbox worker and attended migration
|
|
2
|
+
|
|
3
|
+
The channel remains disabled by default. Installing or updating npm ships the
|
|
4
|
+
worker and launchd template; it does not change `clip_outbox.enabled`, load a
|
|
5
|
+
job, import browser settings, or enable wiki-push. `skillwiki doctor` reports
|
|
6
|
+
**clip channel not configured** until attended setup is complete.
|
|
7
|
+
|
|
8
|
+
After upgrading the CLI, refresh the host plist explicitly:
|
|
9
|
+
|
|
10
|
+
```sh
|
|
11
|
+
skillwiki clip-outbox install-or-migrate
|
|
12
|
+
skillwiki doctor
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
This writes or refreshes
|
|
16
|
+
`~/Library/LaunchAgents/com.karlchow.skillwiki-clip-outbox.plist` from the new
|
|
17
|
+
package. It preserves host configuration and does not call launchctl. Existing
|
|
18
|
+
customizations to this dedicated plist are replaced by the packaged template.
|
|
19
|
+
Its arguments use the absolute installed Node executable and npm `skillwiki`
|
|
20
|
+
bin symlink (including `/opt/homebrew/bin/skillwiki`); npm version upgrades keep
|
|
21
|
+
that bin path. WatchPaths expands the configured outbox root. KeepAlive and
|
|
22
|
+
RunAtLoad supervise the worker; WatchPaths only aids wakeup. The actual recursive
|
|
23
|
+
watch is native macOS FSEvents. If Node's installation prefix changes, rerun the
|
|
24
|
+
migration. Installing with `--omit=optional` omits FSEvents and the worker fails
|
|
25
|
+
closed instead of switching to polling.
|
|
26
|
+
|
|
27
|
+
## Before operator enablement
|
|
28
|
+
|
|
29
|
+
1. Create/select the dedicated `~/Obsidian/clip-outbox` Obsidian vault, with
|
|
30
|
+
`raw/articles` and `raw/assets`. Never select `~/wiki`. Import the existing
|
|
31
|
+
clipper template separately in every browser profile and confirm scratch
|
|
32
|
+
captures arrive in this outbox. Startup scans discover files already there;
|
|
33
|
+
move historical backlog elsewhere until an attended exact-file selection is
|
|
34
|
+
implemented. Do not copy a historical vault into the dedicated outbox.
|
|
35
|
+
2. Configure the existing `clip_outbox.*` namespace: `root`, `state_root`,
|
|
36
|
+
`mirror_root`, `ready_url`, `s3_credential_ref`, `ready_credential_ref`, and
|
|
37
|
+
either an inventoried `d8_note_root` or explicit `d8_note_absent=true`.
|
|
38
|
+
Leave `enabled=false` throughout preparation. State lives outside both
|
|
39
|
+
vaults, for example `~/Library/Application Support/SkillWiki/clip-outbox`;
|
|
40
|
+
create its parent first. The resolver enforces disjoint roots and the fixed
|
|
41
|
+
`central` / `seaweed-wiki:cloud/wiki` destination. The mirror freeze marker
|
|
42
|
+
must exist and `vault_sync.push_enabled=false` must remain set, with the
|
|
43
|
+
wiki-push job unloaded.
|
|
44
|
+
3. Install separately scoped credentials in the operator-owned, mode-0600 host
|
|
45
|
+
file `~/.skillwiki/clip-outbox-credentials.json`. It is a JSON provider map:
|
|
46
|
+
the name referenced by `s3_credential_ref` maps to an object with `endpoint`,
|
|
47
|
+
optional `region` (default `us-east-1`), `accessKeyId`, `secretAccessKey`, and
|
|
48
|
+
optional `sessionToken`; the name referenced by `ready_credential_ref` maps
|
|
49
|
+
to the separately issued file-ingress token string. References may instead
|
|
50
|
+
resolve from service environment variables (S3 value is the same JSON object
|
|
51
|
+
encoded as text). Never place values in a plist, vault page, or command line.
|
|
52
|
+
Launchd does not inherit an interactive shell's exports, so prefer the
|
|
53
|
+
protected file for unattended operation. An MCP token is rejected as the
|
|
54
|
+
file token, including one stored only in the host `.env` file.
|
|
55
|
+
4. Provision S3 permissions for create-only article/asset writes and hash
|
|
56
|
+
readback, plus read-only access to `wiki/meta/delete-intents/` for the exact
|
|
57
|
+
path and ancestor admission checks. Missing/unknown delete-intent access
|
|
58
|
+
blocks publication. Prove concurrent **If-None-Match: \*** creation on the
|
|
59
|
+
deployed SeaweedFS endpoint: one writer wins, identical retries reuse bytes,
|
|
60
|
+
different bytes cannot replace them. Verify the destination binding and
|
|
61
|
+
independent file-ingress notifier token. Local unit tests are not deployed
|
|
62
|
+
conditional-create evidence.
|
|
63
|
+
5. After those checks, the operator explicitly sets `clip_outbox.enabled=true`
|
|
64
|
+
using `skillwiki config set`, then explicitly requests loading:
|
|
65
|
+
|
|
66
|
+
```sh
|
|
67
|
+
skillwiki clip-outbox install-or-migrate --load --conditional-create-proven
|
|
68
|
+
skillwiki doctor
|
|
69
|
+
skillwiki clip-outbox status
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
`--conditional-create-proven` is an operator attestation of the deployed race
|
|
73
|
+
test, not a test performed by this command. It records a non-secret receipt
|
|
74
|
+
bound to the endpoint and destination outside the vault. Both flags and the
|
|
75
|
+
existing enable setting are required for loading. The foreground
|
|
76
|
+
`skillwiki clip-outbox watch` command requires the same valid configuration
|
|
77
|
+
and recorded evidence. A different endpoint invalidates the receipt.
|
|
78
|
+
|
|
79
|
+
## Worker behavior and recovery
|
|
80
|
+
|
|
81
|
+
The worker subscribes before one startup journal/root scan. FSEvents coalescing,
|
|
82
|
+
directory-level events, overflow/drop/root-change flags trigger a recovery scan.
|
|
83
|
+
Normal file events use 500 ms quiet debounce and matching complete input hashes
|
|
84
|
+
500 ms apart. It localizes images with the existing guarded helper, rechecks the
|
|
85
|
+
article and every referenced local binary, and seals exact snapshots outside
|
|
86
|
+
raw. Original input bytes are retained there too; the capture input is not
|
|
87
|
+
rewritten. New article keys include a date and random capture identity; existing
|
|
88
|
+
local asset paths are preserved. The sibling asset `note.md` is included.
|
|
89
|
+
|
|
90
|
+
Sealing enters one serial publication queue immediately. Every asset, including
|
|
91
|
+
the index, is conditionally created and read back for SHA-256 verification before
|
|
92
|
+
the article. Each verified object gets a durable journal receipt. Unknown PUT
|
|
93
|
+
outcomes are inspected before retry. Conflicts and auth/admission failures hold
|
|
94
|
+
the item; transient failures use jittered exponential backoff from about one
|
|
95
|
+
second to at most 60 seconds. No minute/hour timer participates in normal
|
|
96
|
+
publication. The optional hourly root scan is recovery only; disable it with
|
|
97
|
+
`clip_outbox.poll_fallback_enabled=false` for an isolated realtime rehearsal.
|
|
98
|
+
|
|
99
|
+
After article verification, the worker immediately POSTs the v0.10.110 ready
|
|
100
|
+
contract (`vault_id`, `files` with exact paths/hashes) to `/file-ingress/ready`.
|
|
101
|
+
It sends no article or binary content. A failed/unknown hint stays
|
|
102
|
+
`notify-pending`; restart retries that notification without uploading verified
|
|
103
|
+
objects again. Only a verified response accounting for every path records
|
|
104
|
+
`central-visible`. The worker never infers `mirrored`; confirm central pending
|
|
105
|
+
inventory, SSE, exact mirror hashes and image preview separately.
|
|
106
|
+
|
|
107
|
+
`clip-outbox status` lists capture identities, journal states, redacted reason
|
|
108
|
+
codes and attempts. Edits to an already sealed input report
|
|
109
|
+
`SEALED_SOURCE_CHANGED`; the sealed snapshot and published keys remain fixed.
|
|
110
|
+
A corrupt journal or incomplete worker lock stops startup for attended recovery.
|
|
111
|
+
Do not delete a journal/lock while a worker is running. Queue data and receipts
|
|
112
|
+
are retained indefinitely in this slice (there is no automatic pruning), which
|
|
113
|
+
also preserves the required seven-day minimum and all undelivered/conflicted
|
|
114
|
+
items. Disabling the job retains that evidence; it never deletes cloud raw.
|
|
115
|
+
|
|
116
|
+
A successful upload proves S3 storage; a successful ready adoption proves
|
|
117
|
+
central materialization. Mirror freshness and pending-source visibility still
|
|
118
|
+
require the isolated end-to-end rollout checks. Neither this migration nor the
|
|
119
|
+
worker unfreezes the mirror, calls wiki_capture, or runs wiki-push.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "skillwiki",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.111",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"bin": {
|
|
6
6
|
"skillwiki": "dist/cli.js",
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
"files": [
|
|
10
10
|
"dist",
|
|
11
11
|
"templates",
|
|
12
|
+
"docs",
|
|
12
13
|
"skills",
|
|
13
14
|
"README.md"
|
|
14
15
|
],
|
|
@@ -42,5 +43,8 @@
|
|
|
42
43
|
},
|
|
43
44
|
"engines": {
|
|
44
45
|
"node": ">=20"
|
|
46
|
+
},
|
|
47
|
+
"optionalDependencies": {
|
|
48
|
+
"fsevents": "^2.3.3"
|
|
45
49
|
}
|
|
46
50
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "skillwiki",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.111",
|
|
4
4
|
"skills": "./",
|
|
5
5
|
"description": "Project-aware Karpathy-style knowledge base for Claude Code: 22 prompt-only skills (wiki-*, proj-*, using-skillwiki, skillwiki-mcp, skillwiki-connect) backed by the deterministic `skillwiki` CLI.",
|
|
6
6
|
"author": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "skillwiki",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.111",
|
|
4
4
|
"description": "Project-aware Karpathy-style knowledge base: 22 prompt-only skills (wiki-*, proj-*, using-skillwiki, skillwiki-mcp, skillwiki-connect) backed by HTTP MCP wiki_capture.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "karlorz"
|
package/skills/package.json
CHANGED
|
@@ -2,21 +2,20 @@
|
|
|
2
2
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
3
|
<plist version="1.0">
|
|
4
4
|
<dict>
|
|
5
|
-
<key>Label</key>
|
|
6
|
-
<string>com.karlchow.skillwiki-clip-outbox</string>
|
|
5
|
+
<key>Label</key><string>com.karlchow.skillwiki-clip-outbox</string>
|
|
7
6
|
<key>ProgramArguments</key>
|
|
8
7
|
<array>
|
|
9
|
-
<string
|
|
10
|
-
<string
|
|
11
|
-
<string>watch</string>
|
|
12
|
-
</array>
|
|
13
|
-
<key>KeepAlive</key>
|
|
14
|
-
<true/>
|
|
15
|
-
<key>RunAtLoad</key>
|
|
16
|
-
<true/>
|
|
17
|
-
<key>WatchPaths</key>
|
|
18
|
-
<array>
|
|
19
|
-
<string>/Users/REPLACE/Obsidian/clip-outbox/raw/articles</string>
|
|
8
|
+
<string>@NODE_BINARY@</string>
|
|
9
|
+
<string>@CLI_BINARY@</string>
|
|
10
|
+
<string>clip-outbox</string><string>watch</string>
|
|
20
11
|
</array>
|
|
12
|
+
<key>EnvironmentVariables</key>
|
|
13
|
+
<dict><key>HOME</key><string>@HOME@</string><key>SKILLWIKI_HOME</key><string>@HOME@</string></dict>
|
|
14
|
+
<key>KeepAlive</key><true/>
|
|
15
|
+
<key>RunAtLoad</key><true/>
|
|
16
|
+
<key>ThrottleInterval</key><integer>10</integer>
|
|
17
|
+
<key>WatchPaths</key><array><string>@OUTBOX_ROOT@</string></array>
|
|
18
|
+
<key>StandardOutPath</key><string>@LOG_ROOT@/clip-outbox.log</string>
|
|
19
|
+
<key>StandardErrorPath</key><string>@LOG_ROOT@/clip-outbox-error.log</string>
|
|
21
20
|
</dict>
|
|
22
21
|
</plist>
|