@awiki/cli 0.0.1-beta.2

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 (119) hide show
  1. package/.github/workflows/release.yml +44 -0
  2. package/.goreleaser.yml +44 -0
  3. package/AGENTS.md +60 -0
  4. package/CLAUDE.md +192 -0
  5. package/README.md +2 -0
  6. package/docs/architecture/awiki-command-v2.md +955 -0
  7. package/docs/architecture/awiki-skill-architecture.md +475 -0
  8. package/docs/architecture/awiki-v2-architecture.md +1063 -0
  9. package/docs/architecture//345/217/202/350/200/203/346/226/207/346/241/243/cli-init.md +1008 -0
  10. package/docs/architecture//345/217/202/350/200/203/346/226/207/346/241/243/output-format.md +407 -0
  11. package/docs/architecture//345/217/202/350/200/203/346/226/207/346/241/243/overall-init.md +741 -0
  12. package/docs/harness/review-spec.md +474 -0
  13. package/docs/installation.md +372 -0
  14. package/docs/plan/awiki-v2-implementation-plan.md +903 -0
  15. package/docs/plan/phase-0/adr-index.md +56 -0
  16. package/docs/plan/phase-0/audit-findings.md +251 -0
  17. package/docs/plan/phase-0/capability-mapping.md +108 -0
  18. package/docs/plan/phase-0/implementation-constraints.md +363 -0
  19. package/docs/publish.md +169 -0
  20. package/go.mod +29 -0
  21. package/go.sum +73 -0
  22. package/internal/anpsdk/registry.go +63 -0
  23. package/internal/authsdk/session.go +351 -0
  24. package/internal/buildinfo/buildinfo.go +34 -0
  25. package/internal/cli/app.go +136 -0
  26. package/internal/cli/app_test.go +88 -0
  27. package/internal/cli/debug.go +104 -0
  28. package/internal/cli/group.go +263 -0
  29. package/internal/cli/id.go +473 -0
  30. package/internal/cli/init.go +134 -0
  31. package/internal/cli/msg.go +228 -0
  32. package/internal/cli/page.go +267 -0
  33. package/internal/cli/root.go +499 -0
  34. package/internal/cli/runtime.go +232 -0
  35. package/internal/cli/upgrade.go +60 -0
  36. package/internal/cmdmeta/catalog.go +203 -0
  37. package/internal/cmdmeta/catalog_test.go +21 -0
  38. package/internal/config/config.go +399 -0
  39. package/internal/config/config_test.go +104 -0
  40. package/internal/config/write.go +37 -0
  41. package/internal/content/service.go +314 -0
  42. package/internal/content/service_test.go +165 -0
  43. package/internal/content/types.go +44 -0
  44. package/internal/docs/topics.go +110 -0
  45. package/internal/doctor/doctor.go +306 -0
  46. package/internal/identity/client.go +267 -0
  47. package/internal/identity/did.go +85 -0
  48. package/internal/identity/did_test.go +50 -0
  49. package/internal/identity/layout.go +206 -0
  50. package/internal/identity/legacy.go +378 -0
  51. package/internal/identity/public.go +70 -0
  52. package/internal/identity/public_test.go +73 -0
  53. package/internal/identity/readiness.go +74 -0
  54. package/internal/identity/service.go +826 -0
  55. package/internal/identity/store.go +385 -0
  56. package/internal/identity/store_test.go +180 -0
  57. package/internal/identity/types.go +204 -0
  58. package/internal/message/auth.go +167 -0
  59. package/internal/message/group_service.go +838 -0
  60. package/internal/message/group_wire.go +350 -0
  61. package/internal/message/group_wire_test.go +67 -0
  62. package/internal/message/helpers.go +61 -0
  63. package/internal/message/http_client.go +334 -0
  64. package/internal/message/proof.go +156 -0
  65. package/internal/message/proof_test.go +61 -0
  66. package/internal/message/service.go +696 -0
  67. package/internal/message/service_test.go +97 -0
  68. package/internal/message/types.go +155 -0
  69. package/internal/message/wire.go +100 -0
  70. package/internal/message/wire_test.go +49 -0
  71. package/internal/message/ws_proxy_client.go +151 -0
  72. package/internal/output/output.go +350 -0
  73. package/internal/output/output_test.go +48 -0
  74. package/internal/runtime/config.go +117 -0
  75. package/internal/runtime/config_test.go +46 -0
  76. package/internal/runtime/listener/files.go +65 -0
  77. package/internal/runtime/listener/manager.go +142 -0
  78. package/internal/runtime/listener/server.go +983 -0
  79. package/internal/runtime/listener/server_test.go +319 -0
  80. package/internal/runtime/listener/sysproc_unix.go +17 -0
  81. package/internal/runtime/listener/sysproc_windows.go +13 -0
  82. package/internal/runtime/listener/types.go +21 -0
  83. package/internal/runtime/listener/wsclient.go +299 -0
  84. package/internal/runtime/listener/wsclient_test.go +41 -0
  85. package/internal/store/dao.go +632 -0
  86. package/internal/store/dao_test.go +87 -0
  87. package/internal/store/helpers.go +197 -0
  88. package/internal/store/import.go +499 -0
  89. package/internal/store/import_test.go +103 -0
  90. package/internal/store/open.go +71 -0
  91. package/internal/store/query.go +151 -0
  92. package/internal/store/schema.go +277 -0
  93. package/internal/store/schema_test.go +56 -0
  94. package/internal/store/types.go +177 -0
  95. package/internal/update/update.go +368 -0
  96. package/package.json +17 -0
  97. package/scripts/install.js +171 -0
  98. package/scripts/release/release-prerelease.sh +86 -0
  99. package/scripts/release/tag-release.sh +66 -0
  100. package/scripts/release/withdraw-release.sh +78 -0
  101. package/scripts/run.js +69 -0
  102. package/skills/README.md +32 -0
  103. package/skills/awiki-bundle/SKILL.md +76 -0
  104. package/skills/awiki-debug/SKILL.md +80 -0
  105. package/skills/awiki-group/SKILL.md +111 -0
  106. package/skills/awiki-id/SKILL.md +123 -0
  107. package/skills/awiki-msg/SKILL.md +131 -0
  108. package/skills/awiki-page/SKILL.md +93 -0
  109. package/skills/awiki-people/SKILL.md +66 -0
  110. package/skills/awiki-runtime/SKILL.md +137 -0
  111. package/skills/awiki-shared/SKILL.md +124 -0
  112. package/skills/awiki-workflow-discovery/SKILL.md +93 -0
  113. package/skills/awiki-workflow-onboarding/SKILL.md +119 -0
  114. package/skills/manifests/skills.yaml +260 -0
  115. package/skills/templates/bundle-skill-template.md +42 -0
  116. package/skills/templates/debug-skill-template.md +44 -0
  117. package/skills/templates/domain-skill-template.md +56 -0
  118. package/skills/templates/shared-skill-template.md +46 -0
  119. package/skills/templates/workflow-skill-template.md +46 -0
@@ -0,0 +1,44 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - 'v*'
7
+
8
+ permissions:
9
+ contents: write
10
+
11
+ jobs:
12
+ goreleaser:
13
+ runs-on: ubuntu-latest
14
+ steps:
15
+ - name: Checkout
16
+ uses: actions/checkout@v4
17
+ with:
18
+ fetch-depth: 0
19
+
20
+ - name: Set up Go
21
+ uses: actions/setup-go@v5
22
+ with:
23
+ go-version-file: go.mod
24
+
25
+ - name: Set up Node
26
+ uses: actions/setup-node@v4
27
+ with:
28
+ node-version: '18'
29
+
30
+ - name: Run GoReleaser
31
+ uses: goreleaser/goreleaser-action@v6
32
+ with:
33
+ version: latest
34
+ args: release --clean
35
+ env:
36
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
37
+
38
+ - name: Publish to npm (stable tags only)
39
+ if: startsWith(github.ref, 'refs/tags/v') && !contains(github.ref, '-')
40
+ env:
41
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
42
+ run: |
43
+ echo "Publishing @agentconnect/awiki-cli to npm for ${GITHUB_REF}..."
44
+ npm publish --access public
@@ -0,0 +1,44 @@
1
+ project_name: awiki-cli
2
+
3
+ builds:
4
+ - id: awiki-cli
5
+ main: ./cmd/awiki-cli
6
+ binary: awiki-cli
7
+ env:
8
+ - CGO_ENABLED=0
9
+ goos:
10
+ - darwin
11
+ - linux
12
+ - windows
13
+ goarch:
14
+ - amd64
15
+ - arm64
16
+ ldflags:
17
+ - -s -w
18
+ - -X github.com/agentconnect/awiki-cli/internal/buildinfo.Version={{ .Version }}
19
+ - -X github.com/agentconnect/awiki-cli/internal/buildinfo.Commit={{ .ShortCommit }}
20
+ - -X github.com/agentconnect/awiki-cli/internal/buildinfo.BuildDate={{ .Date }}
21
+ - -X github.com/agentconnect/awiki-cli/internal/buildinfo.CGOEnabled=0
22
+
23
+ archives:
24
+ - id: default
25
+ builds:
26
+ - awiki-cli
27
+ name_template: "awiki-cli-{{ .Version }}-{{ .Os }}-{{ .Arch }}"
28
+ format: tar.gz
29
+ format_overrides:
30
+ - goos: windows
31
+ format: zip
32
+
33
+ checksum:
34
+ name_template: "awiki-cli-{{ .Version }}-checksums.txt"
35
+
36
+ release:
37
+ github:
38
+ owner: AgentConnect
39
+ name: awiki-cli
40
+ draft: false
41
+ prerelease: auto
42
+
43
+ changelog:
44
+ use: git
package/AGENTS.md ADDED
@@ -0,0 +1,60 @@
1
+ # Repository Guidelines
2
+
3
+ ## Project Structure & Module Organization
4
+
5
+ This repository currently serves as the design home for **awiki-cli**, a rewrite of the Python CLI client. Architecture and behavior notes live under `docs/architecture/`:
6
+
7
+ - `awiki-v2-architecture.md` — overall CLI architecture
8
+ - `awiki-command-v2.md` — command model and command flow
9
+ - `cli-init.md` / `overall-init.md` — bootstrap and initialization flows
10
+ - `output-format.md` — terminal output contract
11
+
12
+ Cross-repo references are required for implementation work:
13
+
14
+ - `../message-service/docs/api/` — messaging APIs
15
+ - `../user-service/docs/api/` — user APIs
16
+ - `../awiki-agent-id-message/` — legacy Python CLI being rewritten
17
+ - `../cli/` — Feishu CLI reference
18
+
19
+ ## Build, Test, and Development Commands
20
+
21
+ This repo does not yet ship executable Python code, but contributors should use **UV** for all Python workflows when code is added.
22
+
23
+ - `uv sync` — install project dependencies
24
+ - `uv run pytest` — run tests
25
+ - `uv run python -m awiki_cli ...` — run the CLI locally
26
+
27
+ If you add a new command or API integration, update the matching architecture doc and verify the sibling service API docs still match the behavior.
28
+
29
+ ## Coding Style & Naming Conventions
30
+
31
+ - Follow **Google Python Style Guide**.
32
+ - Use 4-space indentation.
33
+ - Keep code comments, docstrings, logs, and user-facing documentation in **English**.
34
+ - Prefer `snake_case` for Python modules, functions, and variables; `PascalCase` for classes.
35
+ - Name design docs by topic, e.g. `auth-bootstrap.md`, `message-sync.md`.
36
+
37
+ ## Testing Guidelines
38
+
39
+ - Place unit tests under `tests/`.
40
+ - Name test files `test_<module>.py`.
41
+ - Cover command parsing, API client behavior, and output formatting.
42
+ - For cross-service flows, validate request/response assumptions against `../user-service` and `../message-service` docs before merging.
43
+
44
+ ## Commit & Pull Request Guidelines
45
+
46
+ Git history is currently minimal (`Initial commit`), so use short, imperative commit messages such as:
47
+
48
+ - `Add auth command architecture draft`
49
+ - `Document message sync workflow`
50
+
51
+ For pull requests, include:
52
+
53
+ 1. A short summary of the change
54
+ 2. A list of affected docs or commands
55
+ 3. Any related service/API paths
56
+ 4. Terminal screenshots or sample output when output behavior changes
57
+
58
+ ## Contributor Notes
59
+
60
+ This project is a rewrite. Prefer aligning new behavior with the intended V2 architecture, while checking `../awiki-agent-id-message/` and `../cli/` for proven interaction patterns.
package/CLAUDE.md ADDED
@@ -0,0 +1,192 @@
1
+ # awiki-cli/
2
+
3
+ > L2 文档 | 父级: [../CLAUDE.md](../CLAUDE.md) | 分形协议: 三层结构
4
+
5
+ 1. **地位**: `awiki-cli` 是 awiki 的命令行客户端项目,负责把命令行输入编排成对后端服务的 API 调用,并为 AI/人类用户提供统一 CLI 产品面。
6
+ 2. **边界**: 输入是 CLI 命令、参数、配置和认证信息;输出是对同级后端服务的请求以及面向终端用户的命令执行结果。本仓库只承担客户端侧命令编排与交互,不承载服务端业务真相。
7
+ 3. **约束**:
8
+ - 后端服务依赖同级的 `../user-service/` 和 `../message-service/`。
9
+ - 消息相关 API 文档位于 `../message-service/docs/api/`。
10
+ - 用户相关 API 文档位于 `../user-service/docs/api/`。
11
+ - 本项目是一个重写项目,重写参考实现位于同级 `../awiki-agent-id-message/`。
12
+ - CLI 交互方式与工程组织可以参考同级飞书 CLI 仓库 `../cli/`。
13
+ - v2 当前实现语言是 **Go 1.22**,并且要求保持 **pure Go / no CGO**。
14
+ - 若需要做系统兼容性壳层,可放在 TypeScript/Node 的薄壳中,不在 Go 核心里引入 CGO。
15
+ - 对外身份标识统一使用 **handle**;`did` 只在协议级定位需要时出现;`user_id` 仅允许作为内部实现字段存在,不得出现在公共 CLI 参数、help、schema、docs 示例或结构化输出中。
16
+ - 如果命令实现涉及服务端 API 变化,需要同步更新对应服务仓库下的 API 文档。
17
+ - 新增或修改本地测试、fixture、协议示例时,默认使用 `e1_...` 形态的 DID profile 后缀(例如 `e1_alice`、`e1_group`),不要使用裸 `e1`。
18
+
19
+ ## 项目背景
20
+
21
+ - 项目名称:`awiki-cli`
22
+ - 项目形态:命令行客户端
23
+ - 当前阶段:
24
+ - Phase 1:CLI 产品壳已实现
25
+ - Phase 2:配置 / local identity / credential layout 已实现首版
26
+ - Phase 3:User / handle lifecycle 与 user gating 已实现首版
27
+ - Phase 4:SQLite 本地状态与迁移已实现首版
28
+ - Phase 5:direct plain messaging 已实现首版(HTTP + WebSocket bridge 结构已接入)
29
+ - Phase 7(部分提前落地):websocket listener / local daemon 服务端已实现首版
30
+ - Phase 7.1:ANP SDK 身份鉴权已接入 HTTP / websocket listener 主路径
31
+ - 通信模式:通过 CLI 命令调用 API 连接 awiki 服务端
32
+ - 主要服务端依赖:
33
+ - `../user-service/`
34
+ - `../message-service/`
35
+ - 关键文档入口:
36
+ - 总体架构:`docs/architecture/awiki-v2-architecture.md`
37
+ - 命令模型:`docs/architecture/awiki-command-v2.md`
38
+ - 输出契约:`docs/architecture/output-format.md`
39
+ - 总实施计划:`docs/plan/awiki-v2-implementation-plan.md`
40
+ - Phase 0 冻结结果:`docs/plan/phase-0/`
41
+ - 重写参考:
42
+ - Python 版本 CLI:`../awiki-agent-id-message/`
43
+ - 飞书 CLI:`../cli/`
44
+ - ANP Go SDK(远端模块依赖):`github.com/agent-network-protocol/anp/golang@v0.7.2`
45
+
46
+ ## 成员清单
47
+
48
+ **README.md**: 仓库入口说明文件。
49
+ **go.mod / go.sum**: Go 模块定义与依赖锁定;当前 Go 版本基线固定为 `1.22`,依赖 `cobra`、`gojq`、`yaml.v3`、`secp256k1/v4`、`modernc.org/sqlite`,并直接使用远端模块依赖 `github.com/agent-network-protocol/anp/golang@v0.7.2`,要求 pure Go。
50
+ **cmd/awiki-cli/main.go**: `awiki-cli` 主程序入口。
51
+ **internal/buildinfo/buildinfo.go**: 版本、构建时间、CGO 状态等构建信息。
52
+ **internal/cmdmeta/catalog.go**: 静态命令元数据目录,作为 schema/命令骨架的事实来源。
53
+ **internal/config/config.go**: XDG 路径解析、AWIKI/AVIKI/E2E 环境变量兼容读取、config.yaml 解析。
54
+ **internal/output/output.go**: 统一 success/error JSON envelope、`--jq`、table/ndjson 渲染。
55
+ **internal/doctor/doctor.go**: 诊断实现,检查构建、配置、env、identity store、SQLite、legacy 路径与 legacy DB。
56
+ **internal/docs/topics.go**: CLI 内建 docs 主题索引。
57
+ **internal/anpsdk/registry.go**: ANP Go SDK 的远端模块依赖入口,统一暴露 DID WBA、HTTP Signatures、direct_e2ee 等后续 Phase 要用到的基础能力。
58
+ **internal/authsdk/session.go**: 基于 ANP SDK `DIDWbaAuthHeader` 的身份鉴权封装,负责 HTTP/WSS hop auth、401 重试、JWT token 捕获与持久化。
59
+ **internal/cli/app.go**: CLI 应用装配、配置解析与统一错误输出入口。
60
+ **internal/cli/root.go**: Cobra 根命令、顶级命令树、status/docs/schema/doctor/version/config show 的实现。
61
+ **internal/cli/id.go**: `id` 域命令处理器,包含 create/list/current/use/register/bind/resolve/recover/profile/import-v1。
62
+ **internal/cli/debug.go**: `debug db query` 与 `debug db import-v1` 的 CLI 处理器。
63
+ **internal/cli/msg.go**: `msg send/inbox/history/mark-read` 的 CLI 处理器,现已支持 direct + group plain messaging。
64
+ **internal/cli/group.go**: `group create/get/join/add/remove/leave/update/members/messages` 的 CLI 处理器。
65
+ **internal/identity/types.go**: identity store、legacy scan、command result 等核心类型。
66
+ **internal/identity/layout.go**: identity 根目录、index.json、路径与安全写入辅助。
67
+ **internal/identity/store.go**: 当前 v2 identity store 的读写、默认 identity 管理。
68
+ **internal/identity/legacy.go**: v1 indexed/flat credential layout 扫描与导入。
69
+ **internal/identity/did.go**: 本地 DID 文档与 proof 生成,使用 pure Go secp256k1。
70
+ **internal/identity/client.go**: user-service RPC/REST 客户端。
71
+ **internal/identity/service.go**: Phase 2/3 高层 identity + user 业务流,封装本地 store、handle lifecycle 与远端 API。
72
+ **internal/identity/did_test.go**: DID 文档和 proof 生成测试。
73
+ **internal/identity/store_test.go**: identity store 与 legacy import 测试。
74
+ **internal/store/types.go**: SQLite store 的核心类型、记录结构与导入报告类型。
75
+ **internal/store/open.go**: pure Go SQLite 打开、WAL / foreign_keys / busy_timeout 配置。
76
+ **internal/store/helpers.go**: thread id、row map、schema version、表/视图存在性等辅助函数。
77
+ **internal/store/schema.go**: v11 schema、indexes、views 与 `EnsureSchema()`。
78
+ **internal/store/dao.go**: messages / contacts / groups / outbox / relationship / rebind / execute_sql 的 DAO。
79
+ **internal/store/import.go**: legacy SQLite 扫描与从 v1 DB 导入 v2 DB。
80
+ **internal/store/schema_test.go**: schema 初始化和 version 测试。
81
+ **internal/store/dao_test.go**: DAO、thread view、owner rebinding、E2EE 清理测试。
82
+ **internal/store/import_test.go**: legacy SQLite 导入测试。
83
+ **internal/message/types.go**: direct/group message 与 group lifecycle 的命令输入/输出模型和 transport 错误定义。
84
+ **internal/message/auth.go**: direct message 的 hop-level auth 与本地 key / did document 读取。
85
+ **internal/message/proof.go**: direct/group 消息与 group lifecycle actor proof 的业务签名基线。
86
+ **internal/message/group_wire.go**: group 标准面和 local-only RPC 参数构造器。
87
+ **internal/message/http_client.go**: direct/group message 与 group lifecycle 的 HTTP JSON-RPC adapter。
88
+ **internal/message/ws_proxy_client.go**: websocket 模式下通过本地 bridge 调用 listener/daemon 的 direct/group adapter。
89
+ **internal/message/service.go**: direct inbox/send/history/mark-read 的业务编排层,融合 transport、identity、store。
90
+ **internal/message/group_service.go**: group lifecycle、group message、本地群缓存同步与群 inbox 聚合逻辑。
91
+ **internal/message/helpers.go**: message 域常用值转换和解码辅助。
92
+ **internal/message/proof_test.go**: sender_proof round-trip 测试。
93
+ **internal/message/group_wire_test.go**: group RPC 参数构造与签名测试。
94
+ **internal/runtime/config.go**: runtime mode(http/websocket)与本地 websocket bridge 配置解析。
95
+ **internal/runtime/listener/types.go**: listener 状态与 session 状态结构。
96
+ **internal/runtime/listener/files.go**: listener 的 pid/status/log/socket 路径与状态文件读写。
97
+ **internal/runtime/listener/wsclient.go**: 远端 message-service WebSocket client。
98
+ **internal/runtime/listener/server.go**: 本地 daemon server、session supervisor、notification 消费与 SQLite 落库。
99
+ **internal/runtime/listener/manager.go**: listener 的 start/stop/restart/status/run 管理逻辑。
100
+ **docs/architecture/awiki-v2-architecture.md**: awiki CLI V2 的整体架构设计文档。
101
+ **docs/architecture/awiki-command-v2.md**: awiki CLI 命令模型与命令层设计文档。
102
+ **docs/architecture/output-format.md**: CLI 输出格式约束与展示设计文档。
103
+ **docs/plan/awiki-v2-implementation-plan.md**: v2 的总体落地实施规划。
104
+ **docs/plan/phase-0/implementation-constraints.md**: Phase 0 冻结后的实现约束表。
105
+ **docs/plan/phase-0/capability-mapping.md**: v2 命令、v1 脚本、服务 API 的能力映射。
106
+ **docs/plan/phase-0/audit-findings.md**: Phase 0 审计冲突与裁决。
107
+ **docs/plan/phase-0/adr-index.md**: Phase 0 ADR 索引。
108
+
109
+ ## 当前实现边界
110
+
111
+ ### 已实现
112
+
113
+ - Phase 1:
114
+ - `awiki-cli` 根命令与顶级命令树
115
+ - 全局 flags:`--format`、`--jq`、`--dry-run`、`--identity`、`--verbose`
116
+ - 统一输出 envelope
117
+ - 静态 `schema`
118
+ - 内建 `docs`
119
+ - 基础 `doctor`
120
+ - `config show`
121
+ - Phase 2:
122
+ - XDG identity store 与 `index.json`
123
+ - default identity 解析与 `id list/current/use/status`
124
+ - 本地 DID identity 创建 `id create`(内部/bootstrap,用于迁移或调试;默认从公开 help 隐藏)
125
+ - v1 legacy credential scan / import:`id import-v1`
126
+ - Phase 3:
127
+ - handle registration / bind / resolve / recover / profile 的首版实现
128
+ - local-only identity vs registered user 状态判断
129
+ - `msg` / `runtime listener` 的 user gating 首版实现
130
+ - current/default identity 自动回填到配置解析结果
131
+ - `id profile get/set` 已正式接入 `user-service` DID Profile RPC
132
+ - Phase 4:
133
+ - pure Go SQLite 打开与 `EnsureSchema()`
134
+ - v11 tables / indexes / views
135
+ - 本地 DAO:messages、contacts、relationship_events、groups、group_members、e2ee_outbox、e2ee_sessions
136
+ - owner_did rebind 与 E2EE 清理 helper
137
+ - legacy SQLite scan / import
138
+ - `debug db query`
139
+ - `debug db import-v1`
140
+ - `doctor` / `config show` 的数据库诊断增强
141
+ - Phase 5(当前首版已落地 direct plain):
142
+ - `msg send --to`
143
+ - `msg send --group`
144
+ - `msg inbox`
145
+ - `msg history --with`
146
+ - `msg mark-read`
147
+ - `group create/get/join/add/remove/leave/update/members/messages`
148
+ - HTTP JSON-RPC adapter
149
+ - websocket runtime bridge / local daemon direct+group client
150
+ - direct/group actor proof 生成与本地消息落库
151
+ - Phase 8(当前首版已落地 content page):
152
+ - `page create/list/get/update/rename/delete`
153
+ - `page create/update --visibility public|draft|unlisted`
154
+ - 通过 `POST /content/rpc` 接入 `user-service` content pages API
155
+ - Phase 7(当前首版已落地 websocket 服务端,先于 secure phase 提前接入):
156
+ - `runtime status`
157
+ - `runtime setup`
158
+ - `runtime mode get/set`
159
+ - `runtime listener status/install/start/stop/restart/uninstall`
160
+ - 隐藏命令 `runtime listener run`
161
+ - 后台 listener 进程、pid/status/socket 管理
162
+ - 本地 daemon / unix socket bridge 服务端
163
+ - 远端单 websocket 连接与 `direct.incoming` / `group.incoming` / `group.state_changed` 下行落库
164
+ - websocket session 断线自动重连、周期 ping 保活、桥接请求按连接状态快速失败后由上层回退 HTTP
165
+ - Phase 7.1(当前首版已落地 ANP SDK 鉴权):
166
+ - 基于 `DIDWbaAuthHeader` 的 HTTP hop auth
167
+ - 401 后自动重试与 challenge 处理
168
+ - 从响应头捕获 bearer token 并回写 identity store
169
+ - listener 在 websocket 模式下可自动尝试 bootstrap JWT
170
+ - Phase 7.2:
171
+ - `id` 域公共输出已统一移除 `user_id`,对外保持 handle-first 身份语义
172
+ - direct origin proof scheme 已切换为 `anp-rfc9421-origin-proof-v1`
173
+ - websocket `direct.incoming` 已按最新 P3 结构仅消费 `params.meta/body/auth`,不再依赖 `server` 包装字段
174
+
175
+ ### 尚未实现
176
+
177
+ - `msg` 域中 direct plain 已实现,listener 服务端首版也已实现,但 websocket 远端真实联调与 secure E2EE 仍未完成
178
+ - `group` 域的 plain lifecycle / local view / group messaging 已接入,`people` 仍大多为 stub;`page` 已完成 content pages 首版
179
+ - secure E2EE 业务流、group plain、发布链路属于后续阶段
180
+
181
+ ## 开发与验证约定
182
+
183
+ - 本机 Go 版本基线固定为 `1.22.x`。
184
+ - 本机若无 `go`,优先使用 Docker 的 `golang:1.22` 镜像执行:
185
+ - `go mod tidy`
186
+ - `gofmt -w $(find cmd internal -name '*.go')`
187
+ - `CGO_ENABLED=0 go build ./...`
188
+ - `CGO_ENABLED=0 go test ./...`
189
+ - Phase 2 / Phase 3 / Phase 4 的本地 smoke test 可通过临时 `AWIKI_*` XDG 环境变量完成,避免污染真实目录。
190
+ - 代码注释和日志保持英文;命令行对用户的交互输出遵循统一 JSON envelope。
191
+
192
+ ⚡触发器: 一旦本文件夹增删文件、调整架构、修改服务依赖、补充新的 Go 模块目录,或切换 Phase 实现边界,请立即重写此文档。
package/README.md ADDED
@@ -0,0 +1,2 @@
1
+ # awiki-cli
2
+ awiki-cli