silvermoon 0.0.1
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/README.md +236 -0
- package/README.zh-CN.md +199 -0
- package/assets/silvermoon.svg +175 -0
- package/bin/silvermoon.js +5 -0
- package/package.json +65 -0
- package/schema/v1/config.schema.json +24 -0
- package/schema/v1/definitions.schema.json +25 -0
- package/schema/v1/idea-status.schema.json +41 -0
- package/skills/silvermoon/SKILL.md +209 -0
- package/skills/silvermoon/references/adoption.md +122 -0
- package/src/adoption.js +313 -0
- package/src/cli.js +197 -0
- package/src/config.js +176 -0
- package/src/create-idea.js +235 -0
- package/src/git.js +284 -0
- package/src/idea-layout.js +439 -0
- package/src/idea-templates.js +109 -0
- package/src/ideas.js +132 -0
- package/src/index.js +260 -0
- package/src/layout.js +21 -0
- package/src/repository.js +88 -0
- package/src/whatsnext.js +379 -0
- package/src/yaml.js +66 -0
package/README.md
ADDED
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="./assets/silvermoon.svg" width="960" alt="Silvermoon, the spirit of your project">
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
English | <a href="./README.zh-CN.md">简体中文</a>
|
|
7
|
+
</p>
|
|
8
|
+
|
|
9
|
+
# Silvermoon(银月)
|
|
10
|
+
|
|
11
|
+
**The spirit of your project.**
|
|
12
|
+
|
|
13
|
+
> *Silvermoon (银月) is named after the artifact spirit and steadfast companion
|
|
14
|
+
> in **A Record of a Mortal's Journey to Immortality** (RMJI; 凡人修仙传).
|
|
15
|
+
> Like her, this Silvermoon lives with the artifacts, understands their state,
|
|
16
|
+
> and helps its companions navigate what comes next: the spirit of your
|
|
17
|
+
> project.*
|
|
18
|
+
|
|
19
|
+
Silvermoon is a shared tool for humans and agents. It checks the repository's
|
|
20
|
+
real state, preserves facts both can understand, guards decision boundaries,
|
|
21
|
+
and answers one question: **what's next?**
|
|
22
|
+
|
|
23
|
+
It does not act as a personal assistant or make human decisions. Silvermoon
|
|
24
|
+
belongs to the project itself, so every collaborator observes the same state
|
|
25
|
+
and the same highest-priority next action.
|
|
26
|
+
|
|
27
|
+
Silvermoon has three public commands:
|
|
28
|
+
|
|
29
|
+
```sh
|
|
30
|
+
silvermoon whats-next [idea]
|
|
31
|
+
silvermoon create-idea
|
|
32
|
+
silvermoon check [--remote | --commit <revision> | --staged | --worktree]
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
`whats-next` first emits a complete doctor-style adoption report and routes
|
|
36
|
+
idea work only after every blocking requirement is satisfied. It fetches and
|
|
37
|
+
observes but never edits, checks out, merges, commits,
|
|
38
|
+
stashes, deletes, resets, fast-forwards, or pushes. It returns one
|
|
39
|
+
highest-priority action. `check` validates storage and Git facts for humans,
|
|
40
|
+
hooks, and CI. `create-idea` runs the same hygiene preflight, then creates one
|
|
41
|
+
structured idea scaffold without staging, committing, pushing, or recording
|
|
42
|
+
approval.
|
|
43
|
+
|
|
44
|
+
## Install
|
|
45
|
+
|
|
46
|
+
```sh
|
|
47
|
+
npm install --save-dev silvermoon
|
|
48
|
+
npx skills add ./node_modules/silvermoon/skills --skill silvermoon --agent github-copilot --yes --copy
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Requires Node.js 22 or newer and Git access to the configured primary branch.
|
|
52
|
+
The npm package contains the canonical skill. Skill registration and updates
|
|
53
|
+
belong to `npx skills`; Silvermoon only diagnoses exact content alignment and
|
|
54
|
+
never changes the registered skill.
|
|
55
|
+
|
|
56
|
+
## Configure
|
|
57
|
+
|
|
58
|
+
Create `.silvermoon/config.yaml`:
|
|
59
|
+
|
|
60
|
+
```yaml
|
|
61
|
+
version: 1
|
|
62
|
+
primaryRepository: https://github.com/example/repository.git
|
|
63
|
+
primaryBranch: main
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Repository URLs are canonical credential-free HTTPS shared state. Credentials,
|
|
67
|
+
named remotes, and URL rewrites remain local Git concerns. Metadata paths are
|
|
68
|
+
fixed and cannot be overridden by configuration.
|
|
69
|
+
|
|
70
|
+
Create or repair this file with ordinary repository editing tools. Silvermoon
|
|
71
|
+
reports configuration findings but does not own an onboarding mutation command.
|
|
72
|
+
|
|
73
|
+
## Store Ideas
|
|
74
|
+
|
|
75
|
+
Each idea is self-contained under one canonical uppercase ULID folder:
|
|
76
|
+
|
|
77
|
+
```text
|
|
78
|
+
.silvermoon/
|
|
79
|
+
|-- config.yaml
|
|
80
|
+
`-- ideas/
|
|
81
|
+
`-- 01M36QGPNTXEPP61DA4KP4AVZF/
|
|
82
|
+
|-- status.yaml
|
|
83
|
+
|-- ledger.md
|
|
84
|
+
`-- outer/
|
|
85
|
+
|-- Deployment.md
|
|
86
|
+
`-- inner/
|
|
87
|
+
|-- Implementation.md
|
|
88
|
+
`-- ideal/
|
|
89
|
+
`-- Idea.md
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
The three nested worlds have canonical English and Chinese names:
|
|
93
|
+
|
|
94
|
+
- **Ideal World (道心):** `Idea.md` defines the ideal.
|
|
95
|
+
- **Inner World (内景):** `Implementation.md` defines implementation.
|
|
96
|
+
- **Outer World (现世):** `Deployment.md` defines deployment.
|
|
97
|
+
|
|
98
|
+
道心立意,内景成形,现世验真。
|
|
99
|
+
|
|
100
|
+
Every world may contain additional files or directories. Ideal World artifacts
|
|
101
|
+
support `Idea.md`, Inner World artifacts support `Implementation.md`, and Outer
|
|
102
|
+
World artifacts support `Deployment.md`; supporting material never replaces
|
|
103
|
+
the canonical same-world entry.
|
|
104
|
+
|
|
105
|
+
Each world is an opaque Git tree. `idealRevision` identifies `ideal/`,
|
|
106
|
+
`implementationRevision` identifies `inner/` and therefore includes the Ideal
|
|
107
|
+
World, and `deploymentRevision` identifies `outer/` and therefore includes both
|
|
108
|
+
nested worlds. This creates deterministic cascading invalidation. `status.yaml`
|
|
109
|
+
and required `ledger.md` are outside all three world trees.
|
|
110
|
+
|
|
111
|
+
The Silvermoon Agent skill authors implementation and deployment plans under
|
|
112
|
+
`## Steps` and outcome contracts under `## Acceptance criteria`. Every item
|
|
113
|
+
uses a stable level-three `I-Sxx`, `I-ACxx`, `D-Sxx`, or `D-ACxx` heading.
|
|
114
|
+
Each criterion contains both its observable outcome and the method that proves
|
|
115
|
+
it. World contracts never use task-list checkboxes.
|
|
116
|
+
|
|
117
|
+
The required idea-root `ledger.md` mirrors stable IDs and short titles under
|
|
118
|
+
Implementation and Deployment Steps and Acceptance criteria checklists.
|
|
119
|
+
Silvermoon requires the regular file but does not parse it, include it in world
|
|
120
|
+
revisions, or infer a human decision from `[x]`. Agents update world headings
|
|
121
|
+
and ledger entries together, reset materially changed completed items, and
|
|
122
|
+
derive the next work from `whats-next`, the contracts, and unchecked entries.
|
|
123
|
+
|
|
124
|
+
```yaml
|
|
125
|
+
version: 1
|
|
126
|
+
id: 01M36QGPNTXEPP61DA4KP4AVZF
|
|
127
|
+
alias: publish-documentation
|
|
128
|
+
approvedRevision: 0123456789abcdef0123456789abcdef01234567
|
|
129
|
+
implementationAcceptedRevision: 0123456789abcdef0123456789abcdef01234567
|
|
130
|
+
deploymentAcceptedRevision: 0123456789abcdef0123456789abcdef01234567
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
`version` and `id` are required. `alias` is optional; when present it is an
|
|
134
|
+
exact, unique, case-sensitive selector. Other optional fields, in canonical
|
|
135
|
+
order, are `abandoned: true` and the three revision fields shown above. Explicit
|
|
136
|
+
`abandoned: false`, derived state, criteria mirrors, source locators, unknown
|
|
137
|
+
keys, aliases/anchors, comments, and noncanonical YAML are rejected.
|
|
138
|
+
|
|
139
|
+
State is derived in order:
|
|
140
|
+
|
|
141
|
+
1. `abandoned` when `abandoned: true`.
|
|
142
|
+
2. `preparing` when `approvedRevision` differs from `idealRevision`.
|
|
143
|
+
3. `implementing` when `implementationAcceptedRevision` differs from
|
|
144
|
+
`implementationRevision`.
|
|
145
|
+
4. `deploying` when `deploymentAcceptedRevision` differs from
|
|
146
|
+
`deploymentRevision`.
|
|
147
|
+
5. `completed` when all three revisions match.
|
|
148
|
+
|
|
149
|
+
## Navigate
|
|
150
|
+
|
|
151
|
+
```sh
|
|
152
|
+
silvermoon whats-next
|
|
153
|
+
silvermoon whats-next 01M36QGPNTXEPP61DA4KP4AVZF
|
|
154
|
+
silvermoon whats-next publish-documentation --json
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Without a selector, Silvermoon asks you to choose among multiple active ideas,
|
|
158
|
+
continue one active idea, or create a new idea. With a ULID or exact unique
|
|
159
|
+
alias, it renders state guidance. Every invocation first checks the configured
|
|
160
|
+
primary branch, conflicts, dirty worktree, and local/remote primary ancestry.
|
|
161
|
+
|
|
162
|
+
JSON reports contain `observedPrimaryCommit`, `selectedIdea`, and exactly one
|
|
163
|
+
`action`. They also contain `onboarding`, whose requirements carry stable IDs,
|
|
164
|
+
statuses, blocking flags, dependencies, observed facts, structured remediation,
|
|
165
|
+
a recommended action, and a recheck command. Execution source is
|
|
166
|
+
`source-checkout`, `project-local`, `temporary`, `global`, or `unknown`.
|
|
167
|
+
Temporary execution can bootstrap diagnosis; normal idea work requires the
|
|
168
|
+
exact project dependency, installed package, and matching repository skill.
|
|
169
|
+
Use the observed commit as the expected remote tip for later writes.
|
|
170
|
+
If primary moves, fetch and reobserve rather than replaying a stale decision.
|
|
171
|
+
|
|
172
|
+
## Create An Idea
|
|
173
|
+
|
|
174
|
+
```sh
|
|
175
|
+
silvermoon create-idea --json
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
After branch, conflict, dirty-worktree, and primary-ancestry hygiene passes, the
|
|
179
|
+
command generates a canonical ULID, structured `Idea.md`, `Implementation.md`,
|
|
180
|
+
`Deployment.md`, and `ledger.md` documents, plus a canonical `status.yaml`
|
|
181
|
+
containing only `version` and `id`. It does not require or invent an alias. The
|
|
182
|
+
new files are intentionally untracked, so the next `whats-next <ULID>` reports
|
|
183
|
+
`inspect-worktree-changes` until you complete the initial `Idea.md`, review the
|
|
184
|
+
candidate, and publish it through ordinary Git. An Agent may add a concise,
|
|
185
|
+
unique alias derived from the user's request while preparing the idea; users
|
|
186
|
+
need not stop to name it.
|
|
187
|
+
|
|
188
|
+
Silvermoon has no approval or acceptance mutation commands. After an explicit
|
|
189
|
+
decision, edit the idea's status file, run `silvermoon check --staged`, commit
|
|
190
|
+
the status fact, and non-force push through ordinary Git.
|
|
191
|
+
|
|
192
|
+
## Validate
|
|
193
|
+
|
|
194
|
+
- `check` validates only the committed `HEAD` snapshot and reads primary
|
|
195
|
+
coordinates from that snapshot.
|
|
196
|
+
- `check --worktree` validates the hypothetical commit containing HEAD, the
|
|
197
|
+
index, unstaged changes, and nonignored untracked files. It reads primary
|
|
198
|
+
coordinates from that complete candidate.
|
|
199
|
+
- `check --staged` validates the index snapshot.
|
|
200
|
+
- `check --commit <revision>` validates one local commit snapshot.
|
|
201
|
+
- `check --remote` uses committed HEAD coordinates to fetch primary, validates
|
|
202
|
+
its immutable tip, and proves retained revision facts against complete
|
|
203
|
+
reachable primary history.
|
|
204
|
+
|
|
205
|
+
Targets are mutually exclusive and never change the caller's branch, index, or
|
|
206
|
+
worktree. Exit status `0` means success, `1` means validation or operational
|
|
207
|
+
failure, and `2` means invalid CLI usage. Use `--json` for the complete stable
|
|
208
|
+
report envelope.
|
|
209
|
+
|
|
210
|
+
The repository configuration schema is
|
|
211
|
+
[schema/v1/config.schema.json](schema/v1/config.schema.json), and the idea
|
|
212
|
+
status schema is
|
|
213
|
+
[schema/v1/idea-status.schema.json](schema/v1/idea-status.schema.json). Both
|
|
214
|
+
use the shared definitions in
|
|
215
|
+
[schema/v1/definitions.schema.json](schema/v1/definitions.schema.json).
|
|
216
|
+
Runtime checks additionally verify canonical YAML, regular fixed metadata
|
|
217
|
+
paths, three world entries, unique aliases, current Git object format, tree
|
|
218
|
+
object types, per-world candidate revision binding, and acceptance history.
|
|
219
|
+
|
|
220
|
+
## Adopt Silvermoon
|
|
221
|
+
|
|
222
|
+
Silvermoon is a direct breaking cutover from the previous product. It recognizes
|
|
223
|
+
only `.silvermoon/config.yaml` version 1 and does not read, convert, or diagnose
|
|
224
|
+
previous layouts. Preserve Git history and record only acceptance facts
|
|
225
|
+
supported by explicit review. See the installed skill's `references/adoption.md` for
|
|
226
|
+
the adoption sequence.
|
|
227
|
+
|
|
228
|
+
## Development
|
|
229
|
+
|
|
230
|
+
```sh
|
|
231
|
+
pnpm install --frozen-lockfile
|
|
232
|
+
pnpm test # fast unit and repository contract tests
|
|
233
|
+
pnpm test:integration # real filesystem and Git behavior
|
|
234
|
+
pnpm test:e2e # packed and installed CLI behavior
|
|
235
|
+
pnpm check # complete release-grade validation
|
|
236
|
+
```
|
package/README.zh-CN.md
ADDED
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="./assets/silvermoon.svg" width="960" alt="Silvermoon,项目之灵">
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<a href="./README.md">English</a> | 简体中文
|
|
7
|
+
</p>
|
|
8
|
+
|
|
9
|
+
# Silvermoon(银月)
|
|
10
|
+
|
|
11
|
+
**The spirit of your project.(项目之灵。)**
|
|
12
|
+
|
|
13
|
+
> *Silvermoon(银月)得名于《凡人修仙传》(A Record of a Mortal's Journey to
|
|
14
|
+
> Immortality,RMJI)中的器灵与坚定同行者。就像她一样,这个 Silvermoon 与项目产物
|
|
15
|
+
> 共存,理解它们的状态,并帮助同行者判断下一步:它是你的项目之灵。*
|
|
16
|
+
|
|
17
|
+
Silvermoon 是人类与 Agent 共享的工具。它检查仓库的真实状态,保存双方都能理解的
|
|
18
|
+
事实,守护决策边界,并回答一个问题:**下一步是什么?**
|
|
19
|
+
|
|
20
|
+
它不是个人助理,也不会替人类作决定。Silvermoon 属于项目本身,因此每位协作者看到的
|
|
21
|
+
都是同一份状态和同一个最高优先级的下一步行动。
|
|
22
|
+
|
|
23
|
+
Silvermoon 有三个公开命令:
|
|
24
|
+
|
|
25
|
+
```sh
|
|
26
|
+
silvermoon whats-next [idea]
|
|
27
|
+
silvermoon create-idea
|
|
28
|
+
silvermoon check [--remote | --commit <revision> | --staged | --worktree]
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
`whats-next` 先输出完整的 doctor 风格 adoption 报告;所有阻塞要求满足后才路由 idea
|
|
32
|
+
生命周期。它会 fetch 并观察,但绝不会编辑、checkout、merge、commit、stash、删除、
|
|
33
|
+
reset、fast-forward 或 push;它只返回一个最高优先级行动。`check` 为人类、hook 和
|
|
34
|
+
CI 验证存储及 Git 事实。`create-idea` 先执行同样的仓库卫生预检,再创建一个结构化
|
|
35
|
+
idea 脚手架;它不会 stage、commit、push 或记录 approval。
|
|
36
|
+
|
|
37
|
+
## 安装
|
|
38
|
+
|
|
39
|
+
```sh
|
|
40
|
+
npm install --save-dev silvermoon
|
|
41
|
+
npx skills add ./node_modules/silvermoon/skills --skill silvermoon --agent github-copilot --yes --copy
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
需要 Node.js 22 或更高版本,并且能够通过 Git 访问配置的 primary branch。
|
|
45
|
+
npm 包内包含 canonical skill;注册和更新由 `npx skills` 负责。Silvermoon 只读诊断
|
|
46
|
+
exact content alignment,不修改 registered skill。
|
|
47
|
+
|
|
48
|
+
## 配置
|
|
49
|
+
|
|
50
|
+
创建 `.silvermoon/config.yaml`:
|
|
51
|
+
|
|
52
|
+
```yaml
|
|
53
|
+
version: 1
|
|
54
|
+
primaryRepository: https://github.com/example/repository.git
|
|
55
|
+
primaryBranch: main
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
仓库 URL 是不含凭据的 canonical HTTPS 共享状态。凭据、remote 名称和 URL rewrite
|
|
59
|
+
仍属于本地 Git 配置。metadata 路径固定,不能通过配置覆盖。
|
|
60
|
+
|
|
61
|
+
## 存储 Idea
|
|
62
|
+
|
|
63
|
+
每个 idea 都放在一个 canonical 大写 ULID 目录中,彼此独立:
|
|
64
|
+
|
|
65
|
+
```text
|
|
66
|
+
.silvermoon/
|
|
67
|
+
|-- config.yaml
|
|
68
|
+
`-- ideas/
|
|
69
|
+
`-- 01M36QGPNTXEPP61DA4KP4AVZF/
|
|
70
|
+
|-- status.yaml
|
|
71
|
+
|-- ledger.md
|
|
72
|
+
`-- outer/
|
|
73
|
+
|-- Deployment.md
|
|
74
|
+
`-- inner/
|
|
75
|
+
|-- Implementation.md
|
|
76
|
+
`-- ideal/
|
|
77
|
+
`-- Idea.md
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
三个嵌套世界各有 canonical English name 和中文名称:
|
|
81
|
+
|
|
82
|
+
- **Ideal World(道心):** `Idea.md` 定义理想。
|
|
83
|
+
- **Inner World(内景):** `Implementation.md` 定义实现。
|
|
84
|
+
- **Outer World(现世):** `Deployment.md` 定义部署。
|
|
85
|
+
|
|
86
|
+
道心立意,内景成形,现世验真。
|
|
87
|
+
|
|
88
|
+
每个世界都可以包含其他文件或目录。Ideal World 的产物服务于 `Idea.md`,Inner World
|
|
89
|
+
的产物服务于 `Implementation.md`,Outer World 的产物服务于 `Deployment.md`;
|
|
90
|
+
辅助材料永远不能取代同一世界的 canonical 入口。
|
|
91
|
+
|
|
92
|
+
每个世界都是不透明的 Git tree。`idealRevision` 标识 `ideal/`;`implementationRevision`
|
|
93
|
+
标识 `inner/`,因此包含 Ideal World;`deploymentRevision` 标识 `outer/`,因此包含
|
|
94
|
+
两个内层世界。由此形成确定性的级联失效。`status.yaml` 和必需的 `ledger.md` 位于
|
|
95
|
+
三个世界之外。
|
|
96
|
+
|
|
97
|
+
Silvermoon Agent skill 在 `Implementation.md` 和 `Deployment.md` 的 `## Steps`
|
|
98
|
+
下编写计划,在 `## Acceptance criteria` 下编写结果契约。每项使用稳定的三级标题
|
|
99
|
+
`I-Sxx`、`I-ACxx`、`D-Sxx` 或 `D-ACxx`。每条 criterion 同时描述可观察结果和证明
|
|
100
|
+
方法。世界契约不使用任务列表 checkbox。
|
|
101
|
+
|
|
102
|
+
idea 根目录必需的 `ledger.md` 在 Implementation 和 Deployment 的 Steps 与
|
|
103
|
+
Acceptance criteria checklist 中镜像稳定 ID 和短标题。Silvermoon 要求它是常规文件,
|
|
104
|
+
但不会解析其内容、把它纳入 world revision,或从 `[x]` 推断人类决定。Agent 同步更新
|
|
105
|
+
world heading 与 ledger entry;若已完成事项发生实质变化,则重置 checkbox;下一步由
|
|
106
|
+
`whats-next`、world contract 和未勾选条目共同决定。
|
|
107
|
+
|
|
108
|
+
```yaml
|
|
109
|
+
version: 1
|
|
110
|
+
id: 01M36QGPNTXEPP61DA4KP4AVZF
|
|
111
|
+
alias: publish-documentation
|
|
112
|
+
approvedRevision: 0123456789abcdef0123456789abcdef01234567
|
|
113
|
+
implementationAcceptedRevision: 0123456789abcdef0123456789abcdef01234567
|
|
114
|
+
deploymentAcceptedRevision: 0123456789abcdef0123456789abcdef01234567
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
`version` 和 `id` 必填。`alias` 可选;存在时,它是区分大小写、精确且唯一的 selector。
|
|
118
|
+
其他可选字段按 canonical 顺序依次为 `abandoned: true` 和上面三个 revision 字段。
|
|
119
|
+
显式的 `abandoned: false`、派生 state、criteria mirror、source locator、未知 key、
|
|
120
|
+
YAML alias/anchor、comment 以及非 canonical YAML 都会被拒绝。
|
|
121
|
+
|
|
122
|
+
状态按以下顺序派生:
|
|
123
|
+
|
|
124
|
+
1. `abandoned: true` 时为 `abandoned`。
|
|
125
|
+
2. `approvedRevision` 与 `idealRevision` 不同时为 `preparing`。
|
|
126
|
+
3. `implementationAcceptedRevision` 与 `implementationRevision` 不同时为 `implementing`。
|
|
127
|
+
4. `deploymentAcceptedRevision` 与 `deploymentRevision` 不同时为 `deploying`。
|
|
128
|
+
5. 三个 revision 全部匹配时为 `completed`。
|
|
129
|
+
|
|
130
|
+
## 导航
|
|
131
|
+
|
|
132
|
+
```sh
|
|
133
|
+
silvermoon whats-next
|
|
134
|
+
silvermoon whats-next 01M36QGPNTXEPP61DA4KP4AVZF
|
|
135
|
+
silvermoon whats-next publish-documentation --json
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
不提供 selector 时,Silvermoon 会要求你从多个 active idea 中选择一个、继续唯一的
|
|
139
|
+
active idea,或创建新 idea。提供 ULID 或精确唯一的 alias 时,它会渲染状态指引。
|
|
140
|
+
每次调用都会先检查配置的 primary branch、冲突、dirty worktree 以及本地与远端 primary
|
|
141
|
+
的 ancestry。
|
|
142
|
+
|
|
143
|
+
JSON 报告包含 `observedPrimaryCommit`、`selectedIdea` 和且仅有一个 `action`。后续写入
|
|
144
|
+
应把 observed commit 当作预期的远端 tip。如果 primary 已移动,应重新 fetch 并观察,
|
|
145
|
+
而不是重放过期决定。
|
|
146
|
+
|
|
147
|
+
## 创建 Idea
|
|
148
|
+
|
|
149
|
+
```sh
|
|
150
|
+
silvermoon create-idea --json
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
branch、冲突、dirty-worktree 和 primary-ancestry 卫生检查通过后,该命令生成 canonical
|
|
154
|
+
ULID、结构化的 `Idea.md`、`Implementation.md`、`Deployment.md`、`ledger.md`,以及只含
|
|
155
|
+
`version` 和 `id` 的 canonical `status.yaml`。它不会要求或虚构 alias。新文件有意保持
|
|
156
|
+
untracked,因此下一次 `whats-next <ULID>` 会报告 `inspect-worktree-changes`,直到你完成
|
|
157
|
+
初始 `Idea.md`、审阅 candidate,并通过普通 Git 发布。Agent 可以根据用户请求添加简洁、
|
|
158
|
+
唯一的 alias;用户无需为了命名而停下。
|
|
159
|
+
|
|
160
|
+
Silvermoon 没有修改 approval 或 acceptance 的命令。收到明确决定后,应编辑 idea 的
|
|
161
|
+
status 文件,运行 `silvermoon check --staged`,提交状态事实,再通过普通 Git 非强制 push。
|
|
162
|
+
|
|
163
|
+
## 验证
|
|
164
|
+
|
|
165
|
+
- `check` 只验证已提交的 `HEAD` snapshot,并从该 snapshot 读取 primary coordinates。
|
|
166
|
+
- `check --worktree` 验证由 HEAD、index、unstaged change 和未忽略 untracked file
|
|
167
|
+
组成的假设 commit,并从这个完整 candidate 读取 primary coordinates。
|
|
168
|
+
- `check --staged` 验证 index snapshot。
|
|
169
|
+
- `check --commit <revision>` 验证一个本地 commit snapshot。
|
|
170
|
+
- `check --remote` 使用已提交 HEAD 的 coordinates fetch primary,验证其 immutable tip,
|
|
171
|
+
并根据完整的、可达的 primary history 证明保留的 revision fact。
|
|
172
|
+
|
|
173
|
+
这些 target 互斥,也都不会改变调用者的 branch、index 或 worktree。退出状态 `0`
|
|
174
|
+
表示成功,`1` 表示验证或操作失败,`2` 表示 CLI 用法无效。使用 `--json` 可获得完整、
|
|
175
|
+
稳定的 report envelope。
|
|
176
|
+
|
|
177
|
+
仓库配置 schema 是 [schema/v1/config.schema.json](schema/v1/config.schema.json),
|
|
178
|
+
idea status schema 是
|
|
179
|
+
[schema/v1/idea-status.schema.json](schema/v1/idea-status.schema.json),二者共用
|
|
180
|
+
[schema/v1/definitions.schema.json](schema/v1/definitions.schema.json) 中的定义。
|
|
181
|
+
|
|
182
|
+
运行时检查还会验证 canonical YAML、固定常规 metadata 路径、三个 world entry、唯一
|
|
183
|
+
alias、当前 Git object format、tree object type、逐 world candidate revision binding
|
|
184
|
+
和 acceptance history。
|
|
185
|
+
|
|
186
|
+
## 采用 Silvermoon
|
|
187
|
+
|
|
188
|
+
Silvermoon 是从上一产品直接进行的不兼容切换。它只识别版本 1 的
|
|
189
|
+
`.silvermoon/config.yaml`,不会读取、转换或诊断旧布局。请保留 Git history,并且只记录
|
|
190
|
+
有明确 review 支持的 acceptance fact。采用步骤见已安装 skill 的
|
|
191
|
+
`references/adoption.md`。
|
|
192
|
+
|
|
193
|
+
## 开发
|
|
194
|
+
|
|
195
|
+
```sh
|
|
196
|
+
pnpm install --frozen-lockfile
|
|
197
|
+
pnpm check
|
|
198
|
+
pnpm check:skills
|
|
199
|
+
```
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 400 1280 880" preserveAspectRatio="xMidYMid meet">
|
|
2
|
+
<g transform="translate(0 1280) scale(.1 -.1)" fill="#7d8590" stroke="none">
|
|
3
|
+
<path d="M6408 8193 c-53 -62 -169 -266 -215 -380 l-22 -53 -49 0 c-53 0 -143
|
|
4
|
+
-23 -178 -47 -13 -8 -29 -11 -36 -7 -52 31 -310 221 -391 287 -228 186 -220
|
|
5
|
+
184 -189 57 42 -166 81 -365 91 -460 12 -108 38 -199 67 -232 11 -13 34 -45
|
|
6
|
+
52 -71 l32 -48 -15 -59 c-32 -124 -10 -227 69 -315 91 -102 61 -213 -79 -295
|
|
7
|
+
-27 -16 -43 -30 -35 -30 29 0 102 40 131 71 19 20 29 26 29 16 0 -9 -19 -32
|
|
8
|
+
-42 -52 l-43 -37 38 20 c42 22 102 86 116 124 8 22 9 22 16 -11 6 -31 3 -37
|
|
9
|
+
-43 -85 -79 -81 -92 -116 -102 -274 -9 -150 -26 -270 -40 -287 -5 -6 -3 -18 5
|
|
10
|
+
-29 17 -22 9 -46 -30 -89 -68 -74 -68 -73 -54 -99 21 -39 78 -105 113 -128 32
|
|
11
|
+
-22 32 -24 25 -72 -5 -27 -7 -107 -7 -176 l2 -127 -49 -100 c-26 -55 -72 -163
|
|
12
|
+
-101 -239 -63 -163 -47 -144 -154 -189 -231 -97 -612 -186 -1165 -273 -55 -8
|
|
13
|
+
-194 -34 -310 -56 -286 -56 -477 -59 -710 -10 -516 107 -1024 -29 -1397 -375
|
|
14
|
+
-197 -182 -309 -254 -473 -301 -314 -91 -730 -74 -1155 48 -58 16 -106 30
|
|
15
|
+
-107 30 -2 0 -3 -9 -3 -20 0 -32 259 -105 475 -134 538 -71 917 12 1200 263
|
|
16
|
+
264 234 353 296 521 360 320 124 623 154 914 90 225 -49 450 -49 685 -2 88 18
|
|
17
|
+
259 49 380 68 729 119 1049 204 1360 360 499 251 728 567 809 1115 62 425 -13
|
|
18
|
+
1095 -158 1400 -30 62 -29 58 25 -96 161 -459 183 -1170 48 -1584 -42 -131
|
|
19
|
+
-135 -307 -201 -380 -13 -14 -20 -21 -17 -15 207 340 267 864 173 1522 -34
|
|
20
|
+
245 -127 601 -166 638 -8 7 -9 4 -3 -10 223 -591 261 -1467 83 -1914 -100
|
|
21
|
+
-254 -253 -431 -490 -569 l-38 -21 27 42 c14 23 49 78 78 122 52 78 112 198
|
|
22
|
+
161 320 119 293 113 1032 -12 1636 -20 96 -40 208 -45 249 -7 66 -7 62 -3 -35
|
|
23
|
+
2 -60 11 -146 19 -190 36 -191 56 -318 51 -329 -2 -6 -5 -3 -5 6 -1 10 -14 59
|
|
24
|
+
-30 110 -43 136 -62 237 -70 378 l-8 125 -1 -123 c-2 -132 6 -179 63 -387 70
|
|
25
|
+
-255 88 -398 87 -715 0 -552 -44 -721 -286 -1105 -78 -123 -87 -128 -26 -15
|
|
26
|
+
220 407 210 358 210 1046 0 609 -2 630 -55 741 -125 261 -155 460 -87 598 204
|
|
27
|
+
416 726 442 977 49 117 -182 164 -333 234 -745 111 -650 234 -1103 394 -1448
|
|
28
|
+
108 -234 320 -462 522 -564 249 -124 394 -145 1040 -152 710 -7 912 -72 775
|
|
29
|
+
-251 -110 -142 7 -188 685 -269 460 -56 561 -110 465 -251 -108 -159 47 -204
|
|
30
|
+
870 -254 454 -28 876 -66 1099 -101 35 -5 66 -7 69 -5 7 8 -14 13 -108 25 -47
|
|
31
|
+
7 -149 20 -227 31 -165 23 -475 52 -783 74 -505 37 -638 52 -790 88 -144 34
|
|
32
|
+
-154 50 -88 136 123 159 -20 246 -487 297 -658 71 -769 110 -665 230 148 171
|
|
33
|
+
-106 284 -640 285 -899 2 -1144 60 -1428 334 -168 163 -281 355 -393 670 -48
|
|
34
|
+
134 -48 126 2 238 58 132 58 128 5 183 -25 27 -52 67 -60 89 -126 363 -207
|
|
35
|
+
636 -251 846 -56 266 -131 461 -222 575 -34 44 -40 59 -46 116 -3 36 -22 112
|
|
36
|
+
-42 170 -67 194 -113 334 -125 382 -14 52 -19 56 -42 30z m63 -228 c15 -49 43
|
|
37
|
+
-133 62 -185 19 -52 38 -115 42 -140 8 -50 13 -50 -59 8 -51 41 -146 83 -227
|
|
38
|
+
100 l-78 17 55 115 c30 63 76 150 102 193 l47 77 14 -47 c8 -27 26 -88 42
|
|
39
|
+
-138z m-978 -5 c88 -79 162 -135 277 -211 l110 -72 -48 -32 c-55 -38 -155
|
|
40
|
+
-142 -178 -187 -13 -25 -18 -28 -26 -17 -8 11 -9 10 -4 -3 6 -21 -25 -98 -40
|
|
41
|
+
-98 -5 0 -19 7 -30 15 -20 15 -11 20 31 15 39 -4 4 14 -38 19 -49 7 -50 19 -6
|
|
42
|
+
43 78 42 90 66 52 106 -16 15 -36 39 -46 52 l-17 25 14 -30 c8 -16 24 -41 35
|
|
43
|
+
-54 31 -35 26 -41 -18 -24 -75 29 -85 49 -130 260 -23 106 -48 214 -56 240 -8
|
|
44
|
+
26 -15 52 -15 56 0 10 59 -36 133 -103z m59 -470 l31 0 -23 -25 c-41 -44 -77
|
|
45
|
+
-24 -100 54 l-9 32 35 -30 c23 -21 45 -31 66 -31z m45 -347 c-7 -77 10 -168
|
|
46
|
+
44 -236 l21 -42 -27 25 c-60 54 -82 166 -54 276 16 64 23 54 16 -23z m74 -202
|
|
47
|
+
c30 -110 33 -141 6 -69 -28 77 -47 151 -46 182 1 21 3 25 6 11 3 -11 18 -67
|
|
48
|
+
34 -124z m52 -246 c-25 -52 -30 -43 -19 30 l9 66 13 -31 c11 -26 11 -36 -3
|
|
49
|
+
-65z m164 -17 c-3 -7 -5 -2 -5 12 0 14 2 19 5 13 2 -7 2 -19 0 -25z m-150
|
|
50
|
+
-606 c-31 -31 -111 -61 -125 -48 -3 3 0 38 7 78 6 40 15 133 20 206 9 142 23
|
|
51
|
+
179 99 267 l27 30 3 -250 2 -249 -33 -34z m1247 287 c29 -135 42 -212 26 -164
|
|
52
|
+
-8 25 -49 210 -66 295 -14 73 17 -30 40 -131z m82 -180 c38 -127 54 -158 109
|
|
53
|
+
-219 l32 -35 -38 -90 c-21 -51 -40 -83 -43 -75 -15 46 -49 207 -75 361 -17 97
|
|
54
|
+
-33 185 -37 195 -5 16 -4 16 5 3 5 -8 27 -71 47 -140z m-39 -41 c-3 -8 -6 -5
|
|
55
|
+
-6 6 -1 11 2 17 5 13 3 -3 4 -12 1 -19z m10 -50 c-3 -7 -5 -2 -5 12 0 14 2 19
|
|
56
|
+
5 13 2 -7 2 -19 0 -25z m-1261 -66 c-8 -14 -9 -210 -1 -302 l8 -85 -20 25
|
|
57
|
+
c-42 53 -46 68 -23 99 36 51 21 44 -37 -19 l-56 -61 -64 63 c-79 78 -78 80 13
|
|
58
|
+
153 42 33 96 77 122 98 44 34 70 48 58 29z m-107 -28 c-29 -36 -69 -47 -69
|
|
59
|
+
-20 0 21 5 25 38 29 20 2 39 4 41 5 2 1 -2 -5 -10 -14z m70 -346 c69 -105 32
|
|
60
|
+
-256 -136 -559 -32 -57 -71 -130 -88 -161 -64 -123 -18 17 76 232 l64 145 0
|
|
61
|
+
161 c0 141 2 165 20 197 25 47 24 47 64 -15z"/>
|
|
62
|
+
<path d="M6227 7625 c362 -244 419 -1770 94 -2514 -228 -523 -784 -846 -2383
|
|
63
|
+
-1387 -1019 -344 -1338 -520 -1338 -737 0 -131 155 -213 562 -297 531 -110
|
|
64
|
+
668 -214 471 -357 -48 -34 -73 -45 -333 -138 -598 -215 -782 -430 -629 -735
|
|
65
|
+
29 -58 63 -103 249 -334 424 -524 483 -720 333 -1113 -3 -8 4 -13 19 -13 88 0
|
|
66
|
+
134 354 73 550 -65 206 -147 332 -484 740 -230 280 -251 399 -98 566 100 110
|
|
67
|
+
254 193 552 299 357 127 445 183 445 285 0 127 -142 202 -540 284 -444 93
|
|
68
|
+
-580 156 -580 270 0 185 402 411 1223 686 1672 561 2235 884 2479 1425 284
|
|
69
|
+
630 267 2110 -28 2454 -40 46 -109 101 -128 101 -6 0 13 -16 41 -35z"/>
|
|
70
|
+
<path d="M6400 7599 c288 -186 361 -395 510 -1459 134 -966 173 -1148 295
|
|
71
|
+
-1390 218 -431 531 -541 1590 -560 259 -5 495 -13 525 -19 60 -11 96 -13 89
|
|
72
|
+
-7 -22 23 -249 39 -644 46 -1316 25 -1560 205 -1734 1280 -30 182 -57 358 -86
|
|
73
|
+
555 -47 321 -66 446 -75 495 -6 30 -22 127 -36 215 -75 472 -203 725 -429 855
|
|
74
|
+
-76 43 -79 37 -5 -11z"/>
|
|
75
|
+
<path d="M6525 7386 c90 -153 180 -487 206 -761 l8 -90 -4 105 c-12 275 -119
|
|
76
|
+
653 -220 775 -18 22 -16 14 10 -29z"/>
|
|
77
|
+
<path d="M5910 7341 c0 -7 11 -56 24 -109 125 -501 152 -1303 55 -1662 -27
|
|
78
|
+
-98 -110 -300 -159 -383 -21 -37 -35 -67 -31 -67 14 0 136 225 169 315 94 248
|
|
79
|
+
122 531 92 920 -45 590 -46 600 -106 845 -34 138 -44 169 -44 141z"/>
|
|
80
|
+
<path d="M6540 7145 c0 -3 9 -46 20 -95 101 -454 114 -1216 29 -1674 -84 -450
|
|
81
|
+
-293 -807 -614 -1048 -165 -124 -268 -196 -460 -323 -786 -519 -1010 -874
|
|
82
|
+
-692 -1097 24 -16 18 -7 -23 38 -213 232 9 552 710 1029 663 451 825 615 983
|
|
83
|
+
1000 165 402 213 1119 121 1825 -19 152 -74 405 -74 345z"/>
|
|
84
|
+
<path d="M6065 6810 c3 -25 13 -94 21 -155 9 -60 20 -227 24 -370 l8 -260 -3
|
|
85
|
+
275 c-3 262 -15 403 -45 520 -9 33 -9 32 -5 -10z"/>
|
|
86
|
+
<path d="M6744 5995 c1 -664 -27 -852 -171 -1140 -129 -256 -268 -405 -658
|
|
87
|
+
-702 -415 -317 -496 -565 -240 -728 164 -106 402 -147 980 -170 677 -27 1068
|
|
88
|
+
-95 1345 -235 449 -225 330 -387 -425 -580 -94 -24 -504 -112 -655 -141 -496
|
|
89
|
+
-94 -870 -255 -955 -410 -129 -235 87 -398 1093 -825 555 -236 776 -356 922
|
|
90
|
+
-504 162 -164 193 -316 107 -523 -24 -56 22 -56 47 1 179 399 -53 646 -989
|
|
91
|
+
1047 -956 410 -1181 548 -1162 712 21 190 348 333 1135 493 940 193 1240 329
|
|
92
|
+
1181 537 -72 260 -709 444 -1639 473 -754 23 -1062 121 -1078 341 -10 138 90
|
|
93
|
+
261 425 520 359 278 499 435 613 691 19 42 36 76 37 75 4 -4 -42 -144 -104
|
|
94
|
+
-322 -142 -399 -137 -536 25 -694 214 -211 519 -278 1607 -356 773 -55 1267
|
|
95
|
+
-176 1820 -446 398 -193 443 -286 240 -484 -150 -145 -170 -189 -124 -265 105
|
|
96
|
+
-173 704 -377 1464 -499 72 -11 213 -34 315 -51 102 -16 280 -43 395 -60 234
|
|
97
|
+
-34 448 -68 483 -77 18 -4 22 -1 22 19 0 28 -78 45 -495 108 -1162 175 -1724
|
|
98
|
+
307 -2012 472 -184 105 -187 160 -18 323 117 112 145 155 145 217 0 126 -189
|
|
99
|
+
263 -605 435 -552 230 -980 317 -1810 368 -832 51 -1182 131 -1380 316 -160
|
|
100
|
+
150 -168 279 -39 647 52 149 114 355 128 432 52 266 66 415 66 685 0 127 -5
|
|
101
|
+
295 -10 375 -6 80 -15 206 -19 280 -5 91 -7 -26 -7 -355z"/>
|
|
102
|
+
<path d="M6814 6350 c4 -41 11 -106 16 -145 64 -505 51 -1164 -29 -1484 -93
|
|
103
|
+
-365 -75 -523 74 -659 186 -170 471 -227 1585 -317 658 -54 1019 -131 1555
|
|
104
|
+
-332 423 -159 633 -264 870 -432 286 -205 478 -255 1290 -336 495 -49 561 -55
|
|
105
|
+
595 -54 72 1 -12 17 -185 33 -1234 118 -1387 152 -1691 368 -145 103 -234 157
|
|
106
|
+
-339 208 -640 306 -1234 484 -1825 544 -64 7 -378 33 -495 41 -1284 92 -1530
|
|
107
|
+
224 -1436 770 11 66 27 165 35 220 9 55 22 143 30 195 48 313 39 718 -29 1314
|
|
108
|
+
-16 140 -32 189 -21 66z"/>
|
|
109
|
+
<path d="M6356 5435 c-169 -543 -460 -789 -1356 -1142 -637 -251 -978 -358
|
|
110
|
+
-1685 -528 -484 -117 -556 -138 -830 -235 -371 -133 -680 -309 -765 -438 -104
|
|
111
|
+
-157 -9 -269 315 -372 612 -193 696 -241 624 -356 -62 -101 -336 -173 -1059
|
|
112
|
+
-280 -1060 -156 -1317 -322 -1446 -939 -39 -187 -78 -313 -124 -404 -18 -36
|
|
113
|
+
-30 -76 -30 -98 l1 -38 25 40 c90 143 130 251 178 490 120 581 356 740 1311
|
|
114
|
+
886 934 142 1181 218 1211 374 21 115 -114 196 -558 334 -295 92 -397 142
|
|
115
|
+
-434 212 -96 187 569 538 1381 728 395 93 832 206 1040 270 228 71 572 192
|
|
116
|
+
811 286 816 322 1099 528 1305 950 51 105 112 278 107 304 -2 8 -11 -12 -22
|
|
117
|
+
-44z"/>
|
|
118
|
+
<path d="M5980 4974 c-36 -36 -99 -92 -140 -125 -41 -33 -85 -68 -97 -79 -13
|
|
119
|
+
-10 -23 -17 -23 -14 0 2 -44 -18 -97 -45 -325 -162 -753 -284 -1538 -437 -497
|
|
120
|
+
-97 -605 -106 -924 -79 -530 46 -878 -43 -1331 -340 -58 -38 -148 -91 -200
|
|
121
|
+
-117 -52 -26 -91 -47 -86 -48 25 -1 193 90 337 182 388 248 701 333 1149 312
|
|
122
|
+
521 -25 655 -12 1329 127 561 116 955 235 1225 371 93 47 110 44 32 -6 -334
|
|
123
|
+
-213 -1182 -499 -1857 -625 -224 -42 -235 -43 -629 -92 -473 -58 -611 -86
|
|
124
|
+
-1050 -219 -341 -102 -401 -118 -605 -159 -381 -77 -533 -91 -1037 -98 -427
|
|
125
|
+
-6 -438 -7 -438 -26 0 -19 7 -19 413 -14 722 10 951 49 1749 297 374 117 540
|
|
126
|
+
151 1033 210 528 63 858 129 1270 256 881 269 1282 473 1547 787 55 65 44 59
|
|
127
|
+
-32 -19z m-285 -244 c-3 -5 -12 -10 -18 -10 -7 0 -6 4 3 10 19 12 23 12 15 0z"/>
|
|
128
|
+
<path d="M6945 4795 c11 -53 93 -215 145 -285 254 -343 651 -465 1655 -510
|
|
129
|
+
419 -19 673 -41 1135 -101 154 -20 453 -71 529 -90 41 -10 76 -17 78 -15 16
|
|
130
|
+
16 -295 78 -632 125 -499 71 -561 77 -1040 101 -695 36 -950 70 -1235 166
|
|
131
|
+
-304 103 -490 279 -620 589 -13 31 -18 39 -15 20z"/>
|
|
132
|
+
<path d="M7377 4755 c56 -66 114 -122 153 -148 150 -101 208 -130 343 -172
|
|
133
|
+
221 -68 505 -85 1087 -67 278 9 272 9 -225 8 -794 -1 -1040 65 -1327 357 -67
|
|
134
|
+
67 -72 71 -31 22z"/>
|
|
135
|
+
<path d="M6167 4629 c-166 -189 -416 -358 -942 -639 -55 -29 -116 -63 -135
|
|
136
|
+
-75 -19 -12 -105 -59 -190 -105 -272 -145 -303 -162 -400 -218 -542 -310 -683
|
|
137
|
+
-536 -445 -712 30 -22 132 -81 226 -130 462 -243 452 -334 -65 -595 -681 -343
|
|
138
|
+
-753 -539 -394 -1070 296 -438 364 -697 262 -997 -13 -40 -20 -68 -15 -63 32
|
|
139
|
+
33 64 174 69 300 9 245 -52 402 -296 765 -220 326 -252 413 -203 558 62 181
|
|
140
|
+
199 296 585 491 338 170 406 227 406 334 0 89 -81 162 -312 281 -343 177 -398
|
|
141
|
+
248 -317 409 81 160 350 345 949 652 52 27 115 61 140 75 25 15 124 71 220
|
|
142
|
+
125 581 326 752 453 939 698 34 44 -2 8 -82 -84z"/>
|
|
143
|
+
<path d="M6432 4496 c-16 -35 -152 -225 -229 -319 -158 -194 -182 -225 -211
|
|
144
|
+
-277 -67 -121 -59 -196 28 -259 41 -29 138 -72 163 -70 7 0 -18 11 -54 25
|
|
145
|
+
-233 88 -224 195 42 524 167 207 300 400 276 400 -2 0 -9 -11 -15 -24z"/>
|
|
146
|
+
<path d="M5406 3799 c-309 -333 -264 -563 137 -708 110 -40 315 -86 422 -95
|
|
147
|
+
l60 -5 -50 10 c-27 6 -105 21 -171 35 -618 123 -737 366 -378 772 65 72 49 66
|
|
148
|
+
-20 -9z"/>
|
|
149
|
+
<path d="M10241 3586 c2 -2 63 -25 134 -50 72 -26 166 -61 210 -77 298 -109
|
|
150
|
+
795 -238 1206 -313 320 -59 1027 -151 1008 -131 -5 4 -49 10 -449 60 -708 88
|
|
151
|
+
-1461 272 -2053 500 -34 14 -66 20 -56 11z"/>
|
|
152
|
+
<path d="M2125 3551 c-129 -46 -251 -95 -580 -236 -461 -197 -589 -234 -970
|
|
153
|
+
-285 -98 -13 -450 -40 -522 -40 -29 0 -53 -4 -53 -10 0 -12 10 -12 206 1 611
|
|
154
|
+
40 835 96 1419 354 152 67 488 203 558 225 20 6 37 13 37 16 0 7 -12 4 -95
|
|
155
|
+
-25z"/>
|
|
156
|
+
<path d="M7590 3404 c8 -2 107 -15 220 -29 809 -101 1204 -209 1453 -396 218
|
|
157
|
+
-164 140 -325 -243 -498 -123 -55 -246 -97 -605 -206 -572 -174 -635 -194
|
|
158
|
+
-794 -257 -436 -174 -552 -350 -350 -532 144 -129 388 -245 1074 -508 1053
|
|
159
|
+
-403 1457 -629 1644 -918 43 -66 57 -69 19 -3 -174 302 -622 558 -1628 930
|
|
160
|
+
-993 367 -1267 542 -1165 743 75 148 355 274 1100 496 971 289 1233 470 1025
|
|
161
|
+
707 -158 180 -553 314 -1230 417 -225 34 -600 73 -520 54z"/>
|
|
162
|
+
<path d="M1145 3329 c-231 -51 -515 -84 -899 -104 l-251 -14 230 4 c211 4 363
|
|
163
|
+
15 600 45 98 12 438 78 470 91 l20 8 -20 -1 c-11 0 -78 -13 -150 -29z"/>
|
|
164
|
+
<path d="M1715 3307 c-121 -65 -190 -109 -315 -202 -280 -208 -645 -310 -1327
|
|
165
|
+
-371 -40 -3 -73 -10 -73 -16 0 -5 24 -7 58 -4 31 3 109 11 172 17 541 49 913
|
|
166
|
+
164 1175 362 130 98 243 171 343 221 39 20 72 38 72 41 0 7 2 9 -105 -48z"/>
|
|
167
|
+
<path d="M4864 3160 c7 -131 84 -234 236 -314 92 -49 103 -46 14 4 -149 82
|
|
168
|
+
-226 179 -244 307 l-9 68 3 -65z"/>
|
|
169
|
+
<path d="M6893 2799 c169 -164 -206 -293 -1243 -429 -626 -82 -844 -170 -980
|
|
170
|
+
-396 -169 -280 -87 -504 315 -860 508 -450 667 -724 601 -1033 -9 -41 -14 -76
|
|
171
|
+
-12 -79 10 -10 36 146 36 216 0 273 -171 541 -570 892 -421 371 -503 547 -374
|
|
172
|
+
809 119 243 352 350 924 426 830 110 1208 203 1325 325 45 46 30 107 -35 149
|
|
173
|
+
-15 9 -9 1 13 -20z"/>
|
|
174
|
+
</g>
|
|
175
|
+
</svg>
|