@arshdelight/practi 0.9.5 → 0.11.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 (57) hide show
  1. package/README.md +51 -14
  2. package/dist/client.js +49 -6
  3. package/dist/client.js.map +1 -1
  4. package/dist/cmd/blob.js +10 -1
  5. package/dist/cmd/blob.js.map +1 -1
  6. package/dist/cmd/clone.js +13 -7
  7. package/dist/cmd/clone.js.map +1 -1
  8. package/dist/cmd/comment.js +50 -15
  9. package/dist/cmd/comment.js.map +1 -1
  10. package/dist/cmd/config.js +1 -1
  11. package/dist/cmd/config.js.map +1 -1
  12. package/dist/cmd/edit.js +80 -8
  13. package/dist/cmd/edit.js.map +1 -1
  14. package/dist/cmd/gc.js +77 -0
  15. package/dist/cmd/gc.js.map +1 -0
  16. package/dist/cmd/lifecycle.js +63 -13
  17. package/dist/cmd/lifecycle.js.map +1 -1
  18. package/dist/cmd/login.js +13 -4
  19. package/dist/cmd/login.js.map +1 -1
  20. package/dist/cmd/ls.js +41 -2
  21. package/dist/cmd/ls.js.map +1 -1
  22. package/dist/cmd/migrate.js +3 -0
  23. package/dist/cmd/migrate.js.map +1 -1
  24. package/dist/cmd/new.js +50 -3
  25. package/dist/cmd/new.js.map +1 -1
  26. package/dist/cmd/note.js +160 -0
  27. package/dist/cmd/note.js.map +1 -0
  28. package/dist/cmd/push.js +6 -1
  29. package/dist/cmd/push.js.map +1 -1
  30. package/dist/cmd/remote.js +15 -8
  31. package/dist/cmd/remote.js.map +1 -1
  32. package/dist/cmd/remove.js +42 -0
  33. package/dist/cmd/remove.js.map +1 -0
  34. package/dist/cmd/repair.js +1 -1
  35. package/dist/cmd/repair.js.map +1 -1
  36. package/dist/cmd/search.js +154 -57
  37. package/dist/cmd/search.js.map +1 -1
  38. package/dist/cmd/show.js +97 -9
  39. package/dist/cmd/show.js.map +1 -1
  40. package/dist/index.js +134 -36
  41. package/dist/index.js.map +1 -1
  42. package/dist/notes.js +121 -0
  43. package/dist/notes.js.map +1 -0
  44. package/dist/oauth.js +3 -0
  45. package/dist/oauth.js.map +1 -1
  46. package/dist/state.js +2 -1
  47. package/dist/state.js.map +1 -1
  48. package/dist/web.js +128 -13
  49. package/dist/web.js.map +1 -1
  50. package/package.json +1 -1
  51. package/skills/use-practi/SKILL.md +52 -15
  52. package/web-default/app.js +2 -2
  53. package/web-default/detail.html +6 -1
  54. package/web-default/detail.js +510 -15
  55. package/web-default/highlight.min.js +1262 -0
  56. package/web-default/lang.js +19 -7
  57. package/web-default/style.css +121 -10
package/dist/cmd/edit.js CHANGED
@@ -2,15 +2,15 @@ import fs from 'node:fs';
2
2
  import { createFromDoc, loadWorkspace, validateWorkspace, resolveNodeRef, nodeFilePath, } from '@arshdelight/pop-sdk';
3
3
  import { claimDirect, defaultDataDir, loadState, saveState } from '../state.js';
4
4
  import { openWorkspace } from '../workspace.js';
5
+ import { storeDocumentRemote } from '../client.js';
6
+ import { runDelete, resolveClaimRef } from './lifecycle.js';
7
+ import { shortHash } from '../render.js';
5
8
  function readStdin() {
6
9
  return fs.readFileSync(0, 'utf8');
7
10
  }
8
11
  function isRecord(v) {
9
12
  return typeof v === 'object' && v !== null && !Array.isArray(v);
10
13
  }
11
- function short(hash) {
12
- return hash.slice('sha256:'.length, 'sha256:'.length + 10);
13
- }
14
14
  /**
15
15
  * 从全部 direct 根做可达性分析(沿 children pins 走——内联与 ChildRef 同形存储,无需区分),
16
16
  * 返回工作区里不可达的节点哈希。即 hub reconcileIndirectClaims 的本地对应:
@@ -38,9 +38,9 @@ export function collectUnreachable(ws, directRoots) {
38
38
  * practi edit <hash>:非交互编辑一个 direct 根——新文档(file/--json/stdin)→ 新哈希换注册。
39
39
  * 编辑即修订:根节点自动追加 revisions(from = 旧根哈希;spec §2.2 历史指针,允许悬空、永不校验)。
40
40
  * 默认 GC 不可达节点(旧根及其独有后代;仍被其它 direct 根引用的内容保留);--keep 跳过。
41
- * 纯本地操作:远端旧版仍在,结束时提示 push + delete 同步。
41
+ * 纯本地操作:远端旧版仍在,结束时提示 push + remove --remote 同步。
42
42
  */
43
- export function runEdit(opts) {
43
+ export async function runEdit(opts) {
44
44
  const ref = opts.positional[0];
45
45
  let text;
46
46
  if (opts.json !== undefined)
@@ -53,10 +53,79 @@ export function runEdit(opts) {
53
53
  text = readStdin();
54
54
  if (!ref || text === undefined || text.trim() === '') {
55
55
  console.error("usage: practi edit <hash> <file.json> | practi edit <hash> --json '<text>' | practi edit <hash> < file.json");
56
- console.error(' [--message <text>] [--no-revision] [--keep]');
56
+ console.error(' [--message <text>] [--no-revision] [--keep] [--remote (replace the claim on the hub only)]');
57
57
  return 1;
58
58
  }
59
59
  const dataDir = opts.dataDir ?? defaultDataDir();
60
+ if (opts.remote === true)
61
+ return remoteEdit(opts, dataDir, ref, text);
62
+ return localEdit(opts, dataDir, ref, text);
63
+ }
64
+ /** --remote:只有远端——把我对 hash A 的认领换成新文档(hash B):A 经 /mine 解析
65
+ * (前缀 OK,兼当「是我的认领」预检)→ 新文档带 revision{from:A} POST 上去(hub 解析
66
+ * 算哈希并认领)→ runDelete 撤掉 A(无人再认领时 hub 硬删旧内容)。本地零写入;
67
+ * 撤 A 失败时 B 已在(两认领并存),明说 practi remove <A> --remote 自愈。 */
68
+ async function remoteEdit(opts, dataDir, ref, text) {
69
+ const state = loadState(dataDir);
70
+ if (!state.remote) {
71
+ console.error('error: no remote configured — run `practi remote set <url>` first');
72
+ return 1;
73
+ }
74
+ let oldRoot;
75
+ try {
76
+ oldRoot = await resolveClaimRef(dataDir, state.remote.url, ref);
77
+ }
78
+ catch (e) {
79
+ console.error(`error: ${e.message}`);
80
+ return 1;
81
+ }
82
+ let doc;
83
+ try {
84
+ doc = JSON.parse(text);
85
+ }
86
+ catch (e) {
87
+ console.error(`error [E_JSON]: not valid JSON — ${e.message}`);
88
+ return 1;
89
+ }
90
+ if (!isRecord(doc)) {
91
+ console.error('error [E_SCHEMA]: the document must be a JSON object (one tree, root included)');
92
+ return 1;
93
+ }
94
+ if (opts.noRevision !== true) {
95
+ const revisions = Array.isArray(doc.revisions) ? doc.revisions : [];
96
+ const already = revisions.some((r) => isRecord(r) && r.from === oldRoot);
97
+ if (!already) {
98
+ revisions.push({
99
+ when: new Date().toISOString().slice(0, 10),
100
+ what: opts.message ?? 'edited via practi edit --remote',
101
+ from: oldRoot,
102
+ });
103
+ doc.revisions = revisions;
104
+ }
105
+ }
106
+ let newRoot;
107
+ try {
108
+ const stored = await storeDocumentRemote(dataDir, state.remote.url, doc);
109
+ newRoot = stored.rootHash;
110
+ }
111
+ catch (e) {
112
+ console.error(`error: remote edit failed — ${e.message} (the old claim is untouched)`);
113
+ return 1;
114
+ }
115
+ if (newRoot === oldRoot) {
116
+ // 与本地路同规:内容哈希相同=无事可换,绝不能走 DELETE(否则空转一次编辑会把自己的认领撤掉)
117
+ console.log(`unchanged: ${oldRoot} (content hashes identically — claim kept)`);
118
+ return 0;
119
+ }
120
+ console.log(`edited: ${oldRoot} -> ${newRoot} (on the hub — it parsed and hashed the tree)`);
121
+ const code = await runDelete({ dataDir, positional: [oldRoot] });
122
+ if (code !== 0) {
123
+ console.error(`remote: withdrawing the old claim failed — both versions are claimed on the hub now; run \`practi remove ${oldRoot} --remote\` to finish`);
124
+ return 1;
125
+ }
126
+ return 0;
127
+ }
128
+ function localEdit(opts, dataDir, ref, text) {
60
129
  const state = loadState(dataDir);
61
130
  const ws = openWorkspace(dataDir);
62
131
  const oldRoot = resolveNodeRef(ws, ref);
@@ -113,9 +182,12 @@ export function runEdit(opts) {
113
182
  const dead = collectUnreachable(loadWorkspace(dataDir), state.direct);
114
183
  for (const h of dead)
115
184
  fs.unlinkSync(nodeFilePath(dataDir, h));
116
- console.log(`gc: removed ${dead.length} unreachable node(s)${dead.length > 0 ? ` — ${dead.map(short).join(', ')}` : ''}`);
185
+ console.log(`gc: removed ${dead.length} unreachable node(s)${dead.length > 0 ? ` — ${dead.map(shortHash).join(', ')}` : ''}`);
186
+ if (dead.length > 0) {
187
+ console.log('hint: blobs stay with their bytes — `practi gc` sweeps orphans when you want');
188
+ }
117
189
  }
118
- console.log(`remote: the hub still holds the old version — sync with \`practi push\` then \`practi delete ${oldRoot}\``);
190
+ console.log(`remote: the hub still holds the old version — sync with \`practi push\` then \`practi remove ${oldRoot} --remote\``);
119
191
  return 0;
120
192
  }
121
193
  //# sourceMappingURL=edit.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"edit.js","sourceRoot":"","sources":["../../src/cmd/edit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"edit.js","sourceRoot":"","sources":["../../src/cmd/edit.ts"],"names":[],"mappings":"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"}
package/dist/cmd/gc.js ADDED
@@ -0,0 +1,77 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { defaultDataDir } from '../state.js';
4
+ import { openWorkspace } from '../workspace.js';
5
+ import { shortHash } from '../render.js';
6
+ function fmtBytes(n) {
7
+ if (n >= 1024 * 1024)
8
+ return `${(n / 1024 / 1024).toFixed(1)} MB`;
9
+ if (n >= 1024)
10
+ return `${(n / 1024).toFixed(1)} KB`;
11
+ return `${n} B`;
12
+ }
13
+ export function runGc(opts) {
14
+ const dataDir = opts.dataDir ?? defaultDataDir();
15
+ const ws = openWorkspace(dataDir);
16
+ // 附件只长在 action 上(schema 保证 practice 无 attachments),扫一遍全部节点即可
17
+ const referenced = new Set();
18
+ for (const node of ws.nodes.values()) {
19
+ if (node.type !== 'action')
20
+ continue;
21
+ for (const att of node.attachments ?? [])
22
+ referenced.add(att.hash);
23
+ }
24
+ const orphans = [];
25
+ const blobsDir = path.join(dataDir, 'blobs');
26
+ if (fs.existsSync(blobsDir)) {
27
+ for (const shard of fs.readdirSync(blobsDir)) {
28
+ const shardDir = path.join(blobsDir, shard);
29
+ let names;
30
+ try {
31
+ names = fs.readdirSync(shardDir);
32
+ }
33
+ catch {
34
+ continue; // 非目录条目(人手放的杂物):不删不报,只跳过
35
+ }
36
+ for (const name of names) {
37
+ if (!/^[0-9a-f]{64}$/.test(name))
38
+ continue; // 抽屉里的杂物(.DS_Store 等):不删不报
39
+ const hash = `sha256:${name}`;
40
+ if (referenced.has(hash))
41
+ continue;
42
+ const file = path.join(shardDir, name);
43
+ let size;
44
+ try {
45
+ size = fs.statSync(file).size;
46
+ }
47
+ catch {
48
+ continue; // 扫描瞬间被人拿走:跳过
49
+ }
50
+ orphans.push({ hash, file, size });
51
+ }
52
+ }
53
+ }
54
+ if (orphans.length === 0) {
55
+ console.log('gc: no orphan blobs');
56
+ return 0;
57
+ }
58
+ const freed = orphans.reduce((s, o) => s + o.size, 0);
59
+ console.log(`gc: ${orphans.length} orphan blob(s), ${fmtBytes(freed)}${opts.apply ? ' — removed' : ' — dry run, pass --apply to remove'}`);
60
+ for (const o of orphans)
61
+ console.log(` ${shortHash(o.hash)}`);
62
+ if (opts.apply) {
63
+ for (const o of orphans)
64
+ fs.unlinkSync(o.file);
65
+ // 抽屉清空了就顺手撤掉(撤不掉=还有东西,不硬来)
66
+ for (const dir of new Set(orphans.map(o => path.dirname(o.file)))) {
67
+ try {
68
+ fs.rmdirSync(dir);
69
+ }
70
+ catch {
71
+ // 非空或已消失:留着无妨
72
+ }
73
+ }
74
+ }
75
+ return 0;
76
+ }
77
+ //# sourceMappingURL=gc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gc.js","sourceRoot":"","sources":["../../src/cmd/gc.ts"],"names":[],"mappings":"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"}
@@ -1,31 +1,63 @@
1
+ import { PracticeError, resolveNodeRef } from '@arshdelight/pop-sdk';
1
2
  import { defaultDataDir, loadState } from '../state.js';
2
- import { authedFetch } from '../client.js';
3
+ import { authedFetch, fetchMine } from '../client.js';
4
+ import { openWorkspace } from '../workspace.js';
3
5
  /**
4
- * practi submit [hash]:提交公开审核(PRIVATE → PENDING_REVIEW,自动机审通过后 PUBLISHED;此前已过审免二审)。
5
- * POST /api/v1/pop/:ref/submit。不带 hash 默认提交全部 direct roots(逐个尝试,非 PRIVATE 的跳过并计失败)。
6
+ * practi publish [hash]:尝试发布(PRIVATE → PENDING_REVIEW,自动机审通过后 PUBLISHED;此前已过审免二审)。
7
+ * POST /api/v1/pop/:ref/submit(hub 端点名不变,这是 CLI 面孔)。不带 hash 默认发布全部 direct roots
8
+ * hub 现行为:PENDING/APPROVED 的重复 submit 幂等(免二审),仅 REJECTED 名单 409。ref 支持短哈希:
9
+ * 本地工作区解析,未命中回落我在 hub 上的认领前缀(唯一匹配才收)。
6
10
  */
7
- export async function runSubmit(opts) {
8
- return runLifecycle(opts, 'submit', 'submitted');
11
+ export async function runPublish(opts) {
12
+ return runLifecycle(opts, 'submit', 'published');
9
13
  }
10
14
  /**
11
15
  * practi unpublish [hash]:撤回待审 / 下架已公开(PENDING_REVIEW|PUBLISHED → PRIVATE,退出公开检索)。
12
- * POST /api/v1/pop/:ref/unpublish。
16
+ * POST /api/v1/pop/:ref/unpublish。ref 同样支持短哈希。
13
17
  */
14
18
  export async function runUnpublish(opts) {
15
19
  return runLifecycle(opts, 'unpublish', 'unpublished');
16
20
  }
17
21
  /**
18
- * practi delete <hash>:删除自己在 remote 上的 DIRECT 认领(无认领的文档被硬删除)。
19
- * DELETE /api/v1/pop/:ref。必须显式给 hash(不做默认全删);纯远端操作,本地工作区不动,
22
+ * practi remove <hash> --remote:删除自己在 remote 上的 DIRECT 认领(无认领的文档被硬删除)。
23
+ * DELETE /api/v1/pop/:ref。必须显式给 hash(不做默认全删);短哈希与 publish 同规
24
+ * (本地工作区解析 → 我在 hub 的认领前缀兜底)。纯远端操作,本地工作区不动,
20
25
  * 再次 push 同内容会重建(新行,PRIVATE)。
21
26
  */
22
27
  export async function runDelete(opts) {
23
28
  if (opts.positional.length === 0) {
24
- console.error('usage: practi delete <hash> (explicit hash required — no default)');
29
+ console.error('usage: practi remove <hash> --remote (explicit hash required — no default; hash prefix OK)');
25
30
  return 1;
26
31
  }
27
32
  return runLifecycle(opts, undefined, 'deleted');
28
33
  }
34
+ /** 短哈希解析:全哈希直过;否则先本地工作区(resolveNodeRef,本地歧义即报),
35
+ * 未命中再回落我在 hub 上的认领做前缀唯一匹配——两条登记簿都可能藏着这篇文档。 */
36
+ export async function resolveClaimRef(dataDir, remoteUrl, ref) {
37
+ const hex = ref.replace(/^sha256:/i, '').toLowerCase();
38
+ if (/^[0-9a-f]{64}$/.test(hex))
39
+ return `sha256:${hex}`;
40
+ if (!/^[0-9a-f]{4,63}$/.test(hex)) {
41
+ throw new Error(`"${ref}" is not a hash (full or ≥4-hex prefix)`);
42
+ }
43
+ try {
44
+ return resolveNodeRef(openWorkspace(dataDir), ref);
45
+ }
46
+ catch (e) {
47
+ if (e instanceof PracticeError && e.code === 'E_AMBIGUOUS')
48
+ throw e;
49
+ // 本地没有(含未初始化工作区):hub 认领表兜底
50
+ const mine = await fetchMine(dataDir, remoteUrl);
51
+ const hits = mine.filter((r) => r.root_hash.startsWith(`sha256:${hex}`));
52
+ if (hits.length === 0) {
53
+ throw new Error(`${ref} is neither in the local workspace nor among your remote claims`);
54
+ }
55
+ if (hits.length > 1) {
56
+ throw new Error(`hash prefix "${ref}" matches ${hits.length} of your remote claims — give more hex`);
57
+ }
58
+ return hits[0].root_hash;
59
+ }
60
+ }
29
61
  async function runLifecycle(opts, action, // undefined → DELETE
30
62
  verb) {
31
63
  const dataDir = opts.dataDir ?? defaultDataDir();
@@ -34,11 +66,29 @@ verb) {
34
66
  console.error('error: no remote configured — run `practi remote set <url>` first');
35
67
  return 1;
36
68
  }
37
- const refs = action === undefined ? opts.positional : (opts.positional[0] ? [opts.positional[0]] : state.direct);
69
+ let refs;
70
+ if (opts.positional[0]) {
71
+ // 三种动作(publish/unpublish/remove --remote)共用同一套 ref 解析:全哈希直过
72
+ // (带不带 sha256: 均可),≥4 位前缀先本地工作区、未命中回落我在 hub 的认领
73
+ try {
74
+ refs = [await resolveClaimRef(dataDir, state.remote.url, opts.positional[0])];
75
+ }
76
+ catch (e) {
77
+ console.error(`error: ${e.message}`);
78
+ return 1;
79
+ }
80
+ }
81
+ else if (action === undefined) {
82
+ console.error('usage: practi remove <hash> --remote (explicit hash required — no default; hash prefix OK)');
83
+ return 1;
84
+ }
85
+ else {
86
+ refs = state.direct; // 默认全部 direct(本来就是全哈希)
87
+ }
38
88
  if (refs.length === 0) {
39
89
  console.error(action
40
- ? 'error: no direct pops to ' + action + ' (none registered)'
41
- : 'usage: practi delete <hash>');
90
+ ? 'error: no direct pops to ' + (action === 'submit' ? 'publish' : action) + ' (none registered)'
91
+ : 'usage: practi remove <hash> --remote');
42
92
  return 1;
43
93
  }
44
94
  let failed = 0;
@@ -57,7 +107,7 @@ verb) {
57
107
  failed++;
58
108
  continue;
59
109
  }
60
- console.log(`${verb}: ${body.root_hash ?? ref} (${body.status ?? ''})`);
110
+ console.log(body.status ? `${verb}: ${body.root_hash ?? ref} (${body.status})` : `${verb}: ${body.root_hash ?? ref}`);
61
111
  }
62
112
  catch (e) {
63
113
  console.error(`${verb} failed: ${ref} — ${e.message}`);
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/cmd/lifecycle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/cmd/lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAOhD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAmB;IAClD,OAAO,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACnD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAmB;IACpD,OAAO,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;AACxD,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAmB;IACjD,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,8FAA8F,CAAC,CAAC;QAC9G,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AAClD,CAAC;AAED;gDACgD;AAChD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAe,EAAE,SAAiB,EAAE,GAAW;IACnF,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACvD,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,UAAU,GAAG,EAAE,CAAC;IACvD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,IAAI,GAAG,yCAAyC,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,CAAC;QACH,OAAO,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC;IACrD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,YAAY,aAAa,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa;YAAE,MAAM,CAAC,CAAC;QACpE,2BAA2B;QAC3B,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC;QACzE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,iEAAiE,CAAC,CAAC;QAC3F,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,aAAa,IAAI,CAAC,MAAM,wCAAwC,CAAC,CAAC;QACvG,CAAC;QACD,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,IAAmB,EACnB,MAA0C,EAAE,qBAAqB;AACjE,IAAY;IAEZ,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,cAAc,EAAE,CAAC;IACjD,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IACjC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;QACnF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,IAAc,CAAC;IACnB,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QACvB,4DAA4D;QAC5D,gDAAgD;QAChD,IAAI,CAAC;YACH,IAAI,GAAG,CAAC,MAAM,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChF,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,UAAW,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YAChD,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;SAAM,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,8FAA8F,CAAC,CAAC;QAC9G,OAAO,CAAC,CAAC;IACX,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,uBAAuB;IAC9C,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,MAAM;YAClB,CAAC,CAAC,2BAA2B,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,oBAAoB;YACjG,CAAC,CAAC,sCAAsC,CAAC,CAAC;QAC5C,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,KAAK,SAAS;gBAC/B,CAAC,CAAC,eAAe,kBAAkB,CAAC,GAAG,CAAC,EAAE;gBAC1C,CAAC,CAAC,eAAe,kBAAkB,CAAC,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC;YACvD,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE;gBAC7D,MAAM,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;aACjD,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAE/C,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;gBAChI,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,YAAY,GAAG,MAAM,MAAM,EAAE,CAAC,CAAC;gBACpD,MAAM,EAAE,CAAC;gBACT,SAAS;YACX,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC,SAAS,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC,SAAS,IAAI,GAAG,EAAE,CAAC,CAAC;QACzH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,YAAY,GAAG,MAAO,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YAClE,MAAM,EAAE,CAAC;QACX,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,CAAC"}
package/dist/cmd/login.js CHANGED
@@ -6,6 +6,7 @@ import { authedFetch, validAccessToken, HubUnreachableError } from '../client.js
6
6
  * practi login:OAuth 2.1 Authorization Code + PKCE(loopback 回调)登录 practihub。
7
7
  * 浏览器授权 → 换 access+refresh token → 凭证存 $dataDir/practi.auth.json(独立于 workspace 状态)。
8
8
  * 之后命令自动用 refresh token 续期(rotation),无需再次交互。
9
+ * --reauth:已登录时不必先 logout——一步重换凭据(revoke 是 best-effort,不阻塞)。
9
10
  */
10
11
  export async function runLogin(opts) {
11
12
  const dataDir = opts.dataDir ?? defaultDataDir();
@@ -17,27 +18,35 @@ export async function runLogin(opts) {
17
18
  const remote = state.remote.url;
18
19
  const resource = cliResource(remote);
19
20
  const existing = loadCredentials(dataDir);
20
- if (existing) {
21
+ if (opts.reauth === true && existing) {
22
+ const revokeTarget = existing.resource && existing.resource !== resource
23
+ ? existing.resource.replace(/\/cli$/, '')
24
+ : remote;
25
+ await revokeToken(revokeTarget, existing.client_id, existing.refresh_token, 'refresh_token');
26
+ deleteCredentials(dataDir);
27
+ console.log('logged out');
28
+ }
29
+ else if (existing) {
21
30
  if (existing.resource && existing.resource !== resource) {
22
31
  // 凭据由另一个 hub 签发,对当前 remote 无用——清掉直接走新登录
23
32
  console.error(`note: stored credentials were issued for ${existing.resource}, not ${resource} — clearing them`);
24
33
  deleteCredentials(dataDir);
25
34
  }
26
35
  else if (isAccessTokenFresh(existing)) {
27
- console.error('error: already logged in — run `practi logout` first to re-authenticate');
36
+ console.error('error: already logged in — use `practi login --reauth` (or logout first)');
28
37
  return 1;
29
38
  }
30
39
  else {
31
40
  // access 已过期:探一次 refresh。被拒=凭据已死,自动清除后继续;连不上=生死未知,保留并退出
32
41
  try {
33
42
  await validAccessToken(dataDir, remote);
34
- console.error('error: already logged in — run `practi logout` first to re-authenticate');
43
+ console.error('error: already logged in — use `practi login --reauth` (or logout first)');
35
44
  return 1;
36
45
  }
37
46
  catch (e) {
38
47
  if (e instanceof HubUnreachableError) {
39
48
  console.error(`error: already logged in, but the session cannot be verified — ${e.message}`);
40
- console.error(' run `practi logout` to force re-login');
49
+ console.error(' use `practi login --reauth` to force a fresh session');
41
50
  return 1;
42
51
  }
43
52
  console.error(`note: stored credentials are dead — clearing them (${e.message})`);
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/cmd/login.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/cmd/login.ts"],"names":[],"mappings":"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"}
package/dist/cmd/ls.js CHANGED
@@ -2,7 +2,10 @@ import { aggregateView } from '@arshdelight/pop-sdk';
2
2
  import { defaultDataDir, loadState } from '../state.js';
3
3
  import { openWorkspace } from '../workspace.js';
4
4
  import { renderSteps, shortHash, viewHeader } from '../render.js';
5
- export function runLs(opts) {
5
+ import { fetchMine } from '../client.js';
6
+ export async function runLs(opts) {
7
+ if (opts.remote === true)
8
+ return remoteLs(opts);
6
9
  const dataDir = opts.dataDir ?? defaultDataDir();
7
10
  const ws = openWorkspace(dataDir);
8
11
  const state = loadState(dataDir);
@@ -10,13 +13,15 @@ export function runLs(opts) {
10
13
  const direct = state.direct.filter(h => ws.nodes.has(h));
11
14
  const directSet = new Set(state.direct);
12
15
  const indirect = [...ws.nodes.keys()].filter(h => !directSet.has(h));
16
+ // 注册在列但节点文件缺失/损坏的根:不无痕消失,进 JSON 的 unresolved(加法键,仅非空时出现)
17
+ const unresolved = state.direct.filter(h => !ws.nodes.has(h));
13
18
  if (opts.json) {
14
19
  const views = direct.map(h => aggregateView(h, ws.nodes));
15
20
  const indirectNodes = indirect.map(h => {
16
21
  const n = ws.nodes.get(h);
17
22
  return { hash: h, name: n.name, type: n.type, ...(n.type === 'practice' ? { op: n.op } : {}) };
18
23
  });
19
- console.log(JSON.stringify({ direct: views, indirect: indirectNodes }, null, 2));
24
+ console.log(JSON.stringify({ direct: views, indirect: indirectNodes, ...(unresolved.length > 0 ? { unresolved } : {}) }, null, 2));
20
25
  return 0;
21
26
  }
22
27
  if (direct.length === 0) {
@@ -56,4 +61,38 @@ export function runLs(opts) {
56
61
  }
57
62
  return 0;
58
63
  }
64
+ /** --remote:列「我在 hub 上的认领」(fetchMine)——与本地 ls 同为 direct 清单语义,
65
+ * 只是登记簿换成远端那本。-a 是本地专属(hub 不提供间接节点视图),组合即拒。 */
66
+ async function remoteLs(opts) {
67
+ if (opts.all) {
68
+ console.error('error: -a is local-only — the hub lists your direct claims (no indirect view)');
69
+ return 1;
70
+ }
71
+ const dataDir = opts.dataDir ?? defaultDataDir();
72
+ const state = loadState(dataDir);
73
+ if (!state.remote) {
74
+ console.error('error: no remote configured — run `practi remote set <url>` first');
75
+ return 1;
76
+ }
77
+ let mine;
78
+ try {
79
+ mine = await fetchMine(dataDir, state.remote.url);
80
+ }
81
+ catch (e) {
82
+ console.error(`error: ${e.message}`);
83
+ return 1;
84
+ }
85
+ if (opts.json) {
86
+ console.log(JSON.stringify({ remote: state.remote.url, direct: mine }, null, 2));
87
+ return 0;
88
+ }
89
+ if (mine.length === 0) {
90
+ console.log('(no remote claims — push one with `practi push`)');
91
+ return 0;
92
+ }
93
+ for (const r of mine) {
94
+ console.log(`${shortHash(r.root_hash)} [${r.status}] ${r.name ?? ''}`);
95
+ }
96
+ return 0;
97
+ }
59
98
  //# sourceMappingURL=ls.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ls.js","sourceRoot":"","sources":["../../src/cmd/ls.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ls.js","sourceRoot":"","sources":["../../src/cmd/ls.ts"],"names":[],"mappings":"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"}
@@ -129,6 +129,9 @@ export function runMigrate(opts) {
129
129
  }
130
130
  if (toIsConvention) {
131
131
  console.log(`next run: the default data dir resolves to ${to} (convention location)`);
132
+ if (process.env.PRACTI_HOME || process.env.POP_HOME) {
133
+ console.error(`warning: $${process.env.PRACTI_HOME ? 'PRACTI_HOME' : 'POP_HOME'} is set and OUTRANKS the convention — unset it or repoint it at ${to}, or every bare command keeps resolving to the deleted directory`);
134
+ }
132
135
  }
133
136
  else {
134
137
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/cmd/migrate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/cmd/migrate.ts"],"names":[],"mappings":"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"}