stratagate-dsh 0.3.11 → 0.3.12
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/CHANGELOG.md +55 -1
- package/dist/client.js +3 -4
- package/dist/plugin.js +1368 -81
- package/dist/plugin.js.map +1 -1
- package/docs/DSH.md +12 -0
- package/docs/DSH.zh-CN.md +12 -0
- package/docs/dreaming-agent.md +45 -0
- package/docs/validation/first-login-graph-warning-20261013/render-comparison.json +58 -0
- package/docs/validation/first-login-graph-warning-20261013/tests.after.json +1 -0
- package/package.json +1 -1
package/docs/DSH.md
CHANGED
|
@@ -18,6 +18,18 @@ The plugin adapts DSH session events to the existing StrataGate memory engine; i
|
|
|
18
18
|
|
|
19
19
|
## How it is designed
|
|
20
20
|
|
|
21
|
+
### Directory Dreaming (development)
|
|
22
|
+
|
|
23
|
+
Click **🌙 Dreaming** in the long-term memory directory to let a dedicated Agent work through existing chapters, sections, Event membership, overviews, and source-backed experience. The panel shows an animated moon, completed-batch progress, pause, resume, and terminate controls. Closing settings leaves the task running. After a host restart, resume its durable checkpoint from the directory; committed edits are retained.
|
|
24
|
+
|
|
25
|
+
**打开 Dreaming 会话 ↗** opens the real DeepSeek Harness conversation, including tool calls and results, where users can refine the goal. This version writes only the directory. Event facts, raw messages, graph, and Profile remain protected. Dedicated read-only tools reuse Core retrieval without chat evidence batches, reinforcement, or changes to Block expansion and decay.
|
|
26
|
+
|
|
27
|
+
There is no fixed whole-run model-call allowance. Growing memory is split into batches and model-facing history is compacted while the full human transcript is retained. The Agent continues across batches and recovers occasional empty or text-only responses; three consecutive replies without tool action pause the run. Unproductive loops, request failures, changed sources, or a user-configured cumulative token boundary pause the task without losing progress. Consumption is estimated, not provider billing. If another task changes the sources or directory, terminate and start again rather than overwrite newer content.
|
|
28
|
+
|
|
29
|
+
**AI 会看到的目录 ↗** opens a temporary window showing the entire actual default directory injection for the selected space, with no additional UI truncation. The existing directory summary budget still applies; factual answers require source retrieval.
|
|
30
|
+
|
|
31
|
+
Dreaming requires dedicated Agent creation, scoped tool restrictions, and session recovery. It has been tested with isolated data against the native DSH `0.2.0-rc.2` Agent Loop and JSONL persistence. Older hosts lacking these capabilities receive an explicit upgrade message while ordinary memory remains available. Organization quality with a live online model still needs acceptance testing.
|
|
32
|
+
|
|
21
33
|
StrataGate does not treat memory as a single summary that is continually rewritten. It separates **source evidence, derived memory, retrieval assessment, and usage feedback**:
|
|
22
34
|
|
|
23
35
|
```mermaid
|
package/docs/DSH.zh-CN.md
CHANGED
|
@@ -18,6 +18,18 @@
|
|
|
18
18
|
|
|
19
19
|
## 它是怎么设计的
|
|
20
20
|
|
|
21
|
+
### 目录 Dreaming(开发版)
|
|
22
|
+
|
|
23
|
+
在长期记忆的目录页点击 **🌙 Dreaming**,由独立 Agent 分批整理已有章节、小节、Event 归属、总览与有来源的经验。运行时显示做梦动画和真实批次进度,可暂停、继续或终止。关闭设置页不取消任务;宿主重启后从目录页继续已保存的断点,已提交修改保留。
|
|
24
|
+
|
|
25
|
+
**打开 Dreaming 会话 ↗** 进入真实 DeepSeek Harness 会话,可查看工具调用和结果,也可补充整理方向。第一版只写目录;Event 事实、原始消息、图谱和 Profile 不参与改写。检索复用 Core,但不创建聊天证据批次、不强化记忆,也不改变 Block 的展开与衰减状态。
|
|
26
|
+
|
|
27
|
+
没有固定的整轮模型调用次数上限。记忆增长时自动拆批,并压缩模型使用的历史上下文;用户可查看的完整会话记录保留。完成一批后自动进入下一批;偶发空响应或普通说明会提示继续,连续三次没有工具行动才暂停。重复无效调用、请求失败、来源变化或用户设置的累计 token 消耗边界会暂停,保留进度。消耗数字为估算,不是供应商账单。来源或目录被其他任务修改时应终止并重新开始,避免覆盖新内容。
|
|
28
|
+
|
|
29
|
+
**AI 会看到的目录 ↗** 打开临时窗口,展示当前空间实际默认注入的全部目录文本;窗口不再额外截断。默认注入仍遵守原有目录摘要预算,具体事实需要检索来源。
|
|
30
|
+
|
|
31
|
+
Dreaming 需要宿主提供专属 Agent、工具隔离与会话恢复接口;已在 DSH `0.2.0-rc.2` 的真实 Agent Loop 与 JSONL 会话持久化中使用隔离数据验证。缺少这些能力的旧宿主会明确提示升级,普通记忆功能继续使用。真实在线模型的整理质量仍需实际验收。
|
|
32
|
+
|
|
21
33
|
StrataGate 不把“记忆”当作一段不断改写的摘要,而是把**原始证据、派生记忆、检索判断和使用反馈**分开处理:
|
|
22
34
|
|
|
23
35
|
```mermaid
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# 目录 Dreaming Agent
|
|
2
|
+
|
|
3
|
+
第一版 scope 为 `directory`,持久化 `policyVersion` 用于后续扩展与兼容检查。任务调度、认领/租约、证据读取、目录写入与 DSH 会话宿主分开:Core 管理原子提交与断点,Runtime 协调运行,DSH 提供真实 Agent 和会话;UI 只请求状态与控制动作。
|
|
4
|
+
|
|
5
|
+
新会话头部传入目录所属工作区的 `cwd`,优先从匹配 namespace 的活动普通会话取值,再从持久化会话头部恢复;不读取历史正文。项目/会话作用域找不到真实路径时暂停并提示先打开对应普通会话,不以插件目录冒充工作区。全局/自定义导入空间无唯一工作区时使用宿主运行目录作为查看地址,工具权限仍按 run scope 隔离。打开会话前完成宿主 flush。旧版本生成的无 `cwd` 会话头不可改写;打开或继续时提示终止旧轮并重新开始,保留已提交的目录修改与旧日志。
|
|
6
|
+
|
|
7
|
+
## 工具与权限
|
|
8
|
+
|
|
9
|
+
| 工具 | 行为 |
|
|
10
|
+
| --- | --- |
|
|
11
|
+
| `memory_list_topics` / `memory_expand_topic` | 运行空间内目录导航与分页总览,独立 scoped 实现 |
|
|
12
|
+
| `dreaming_search` | 冻结有效 Event、其引用的原始消息及有效图谱检索 |
|
|
13
|
+
| `dreaming_read` | 完整 Event、来源 Block、图谱节点的只读分页 |
|
|
14
|
+
| `dreaming_directory` | 当前章节改名、小节改名/合并、当前批 Event 移动、带来源的总览/经验替换或追加 |
|
|
15
|
+
| `dreaming_finish` | 确认当前批已检查;推进下一批,最终结束 |
|
|
16
|
+
|
|
17
|
+
Agent 只注册上述工具,拒绝继承的 shell、网络、文件和记忆写入工具。普通聊天工具的证据评估批次与使用反馈不复用。`dreaming_search` 使用底层检索;`dreaming_read` 使用 `renderBlock`,不调用会提升层级/改变衰减锚点的 `expandBlock`。Dreaming 系统提示词注入持久用户画像,仅作为相关偏好和长期要求的参考,不能替代目录来源证据;会话不重新摄入记忆,也不继承普通聊天的自动检索上下文。
|
|
18
|
+
|
|
19
|
+
## 持久化与并发
|
|
20
|
+
|
|
21
|
+
任务保存在既有 Topic 状态中,无新增数据库/schema 迁移。任务冻结来源版本,按章节拆成有限上下文页面。提交在 Core 现有事务内检查 run ID、owner、epoch、租约、章节版本、来源有效性和已读证据。大 Event 只有连续分页读完才进入证据集合;检查覆盖断点不依赖最近工具日志的长度。
|
|
22
|
+
|
|
23
|
+
Event 分页按递归稳定字段顺序序列化,页结果和持久断点绑定完整内容摘要。重启不依赖对象属性插入顺序;旧格式断点或内容摘要改变时清除旧覆盖并从零读取。当前批所有 Event 的完整证据覆盖满足后才能完成,未读完的大 Event 不会被报告为已检查。
|
|
24
|
+
|
|
25
|
+
暂停等当前步骤到达安全边界,继续时换 epoch;终止立即取消当前请求并提升 epoch,使迟到结果无法写入。已完成写入保留。运行定期续租;崩溃后过期认领可人工继续。并发投影改变来源或章节会拒绝写入,由用户终止后重新规划。
|
|
26
|
+
|
|
27
|
+
小节身份不依赖当前标题;合并保留旧身份的别名,后续普通投影保留身份、别名和有效经验。空改动和回到近期旧状态的编辑被拒绝,不能用反复改名制造进展。
|
|
28
|
+
|
|
29
|
+
## 增长、结束与消耗
|
|
30
|
+
|
|
31
|
+
批次最多 24 个 Event,并按预计上下文容量进一步拆小;这是页面大小,不是整轮调用限额。目录页的进度按这些批次计算(例如 `1/14` 批约为 7%),不是简单按章节数计算;一个较大的章节可能拆成多个批次。每个工作步骤和人工继续时使用 DSH 的 surface replacement 重建模型工作上下文,只携带一个当前批次、必要的现有总览、用户方向、最近工具结果和错误反馈;原始会话日志完整保留。目录 sections/overview 页绑定内容摘要并持久记录覆盖,任务明确给出已读范围与下一未读位置,压缩后不重新开始浏览。失败写入提案单独保留,不受最近 12 条工具日志的窗口影响;过大提案只提供错误与分批修正提示,完整内容仍在会话记录。用户方向本身过长时暂停并提示精简,避免静默丢失指令。
|
|
32
|
+
|
|
33
|
+
`dreaming_finish` 表示批次已全部检查,允许无需修改;所有冻结批次完成后进入 completed。重复无效工具调用、连续无工具进展的模型步骤、失败或用户设置的累计消耗边界暂停。默认没有累计 token 限额。计量包含实际模型输入结构的 token 估算和输出估算/供应商输出计数,界面明确为估算;不声称价格或账单精度。
|
|
34
|
+
|
|
35
|
+
无进展计数在新增完整 Event 证据、推进连续有效来源页、读取经校验的目录新项或成功修改目录时重置。搜索关键词变化、空结果与重读已覆盖页均不重置;每批允许有限探索。空响应(含 `(empty)`)或普通文字回复结束但任务未完成时,在同一 Agent Loop 内提示继续;连续三次没有工具行动才暂停,不按整轮累计。复用持久化的 idleModelSteps,工具检查点或完成批次后重置;不使用后台定时重试。用户暂停、终止、真实请求错误和消耗边界优先于自动继续。切批消息明确上一批已完成、当前批待处理,完成全部批次后只生成总结,不再催促工具调用。
|
|
36
|
+
|
|
37
|
+
原生 Agent 在请求最终组装后的 `llm/stream` 边界计量实际消息(含临时任务和系统提示)及 JSON 工具定义,发送前再次核验消耗边界,自动继续也走相同入口。单次响应最多 32768 Token;若一轮回复尚未产生任何原生工具调用,普通文本超过 8192 Token 会中断并暂停,避免模型重复描述调用计划而持续消耗。reasoning 不计入这条普通文本边界,但 reasoning、普通说明和真正的工具参数均计入单次响应消耗及 32768 Token 总上限。模型失败时拦截宿主自动重试并暂停。没有整轮时长或累计调用次数硬限额;完成后的总结请求也计量,但不重新激活任务或租约。
|
|
38
|
+
|
|
39
|
+
目录写入使用带必需 kind 的明确参数结构,操作数组必须扁平;错误不视为成功提交,Agent 可以纠正并重新提交。暂停时不为说明原因额外调用模型,而是在原生会话写入插件通知,报告真实原因、检查批次与已保存修改。start 每次创建新 run/session;resume 保留本轮会话身份,重建工作上下文,避免累计发送旧轮次历史。
|
|
40
|
+
|
|
41
|
+
每批每次继续最多允许 64 次成功目录提交,达到后在当前步骤检查点暂停并保留已写入内容。用户明确继续或进入下一批时重新计数;页数与整轮调用量不受此上限限制。无工具循环在请求发送前被拦截时,不计入模型调用次数或 Token 消耗。
|
|
42
|
+
|
|
43
|
+
## 验证边界
|
|
44
|
+
|
|
45
|
+
测试使用隔离 SQLite 与 DSH JSONL 目录,验证真实 Agent Loop、工具拒绝、分批、写入、暂停/终止、用户补充、宿主重启恢复与完整会话。浏览器检查桌面/手机布局、浮窗原文、控制按钮与减少动画设置。测试模型是脚本化流,不证明真实模型能正确提炼经验;未改用户生产数据,也未发布。
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"date": "2026-10-13",
|
|
3
|
+
"input": "overview: undefined (no workspace memory snapshot)",
|
|
4
|
+
"before": [
|
|
5
|
+
"div",
|
|
6
|
+
{
|
|
7
|
+
"className": "sg-memory-alerts",
|
|
8
|
+
"aria-live": "polite"
|
|
9
|
+
},
|
|
10
|
+
[
|
|
11
|
+
[
|
|
12
|
+
"button",
|
|
13
|
+
{
|
|
14
|
+
"key": "graph-incomplete",
|
|
15
|
+
"type": "button",
|
|
16
|
+
"className": "sg-memory-alert attention",
|
|
17
|
+
"aria-label": "知识图谱更新未完成 · 0/0 Events。查看详情。查看详情。"
|
|
18
|
+
},
|
|
19
|
+
[
|
|
20
|
+
"span",
|
|
21
|
+
{
|
|
22
|
+
"className": "sg-memory-alert-mark",
|
|
23
|
+
"aria-hidden": "true"
|
|
24
|
+
},
|
|
25
|
+
"⚠"
|
|
26
|
+
],
|
|
27
|
+
[
|
|
28
|
+
"span",
|
|
29
|
+
null,
|
|
30
|
+
[
|
|
31
|
+
"span",
|
|
32
|
+
{
|
|
33
|
+
"className": "sg-memory-alert-title"
|
|
34
|
+
},
|
|
35
|
+
"知识图谱更新未完成 · 0/0 Events"
|
|
36
|
+
],
|
|
37
|
+
[
|
|
38
|
+
"span",
|
|
39
|
+
{
|
|
40
|
+
"className": "sg-memory-alert-copy"
|
|
41
|
+
},
|
|
42
|
+
"查看详情。"
|
|
43
|
+
]
|
|
44
|
+
],
|
|
45
|
+
[
|
|
46
|
+
"span",
|
|
47
|
+
{
|
|
48
|
+
"className": "sg-chevron",
|
|
49
|
+
"aria-hidden": "true"
|
|
50
|
+
},
|
|
51
|
+
"›"
|
|
52
|
+
]
|
|
53
|
+
]
|
|
54
|
+
]
|
|
55
|
+
],
|
|
56
|
+
"after": null,
|
|
57
|
+
"bundled": null
|
|
58
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"numTotalTestSuites":4,"numPassedTestSuites":4,"numFailedTestSuites":0,"numPendingTestSuites":0,"numTotalTests":111,"numPassedTests":111,"numFailedTests":0,"numPendingTests":0,"numTodoTests":0,"snapshot":{"added":0,"failure":false,"filesAdded":0,"filesRemoved":0,"filesRemovedList":[],"filesUnmatched":0,"filesUpdated":0,"matched":0,"total":0,"unchecked":0,"uncheckedKeysByFile":[],"unmatched":0,"updated":0,"didUpdate":false},"startTime":1791874733227,"success":true,"testResults":[{"assertionResults":[{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract registers its settings section through the DSH module loader","status":"passed","title":"registers its settings section through the DSH module loader","duration":18.384799999999927,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract keeps Settings available when chat get setup fails","status":"passed","title":"keeps Settings available when chat get setup fails","duration":18.782500000000027,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract keeps Settings available when chat event setup fails","status":"passed","title":"keeps Settings available when chat event setup fails","duration":3.2268000000000256,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract keeps Settings available when chat inject setup fails","status":"passed","title":"keeps Settings available when chat inject setup fails","duration":3.4814999999999827,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract keeps Settings available when chat register setup fails","status":"passed","title":"keeps Settings available when chat register setup fails","duration":3.9908000000000357,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract declares the supported DSH Conversation package and service contracts","status":"passed","title":"declares the supported DSH Conversation package and service contracts","duration":0.6525000000000318,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract parses and consumes only the StrataGate feedback deep link while preserving unrelated URL state","status":"passed","title":"parses and consumes only the StrataGate feedback deep link while preserving unrelated URL state","duration":3.059500000000071,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract prefers formal Settings navigation for same-origin Feedback links and falls back to the HTTP deep link","status":"passed","title":"prefers formal Settings navigation for same-origin Feedback links and falls back to the HTTP deep link","duration":4.646200000000022,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract accepts Feedback route state from the Settings host without reading localized DOM controls","status":"passed","title":"accepts Feedback route state from the Settings host without reading localized DOM controls","duration":5.357399999999984,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract opens a requested graph node through Settings navigation and reports failures","status":"passed","title":"opens a requested graph node through Settings navigation and reports failures","duration":3.3794000000000324,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract maps participants from node ids, deduplicates aliases, and keeps text-only pills inert","status":"passed","title":"maps participants from node ids, deduplicates aliases, and keeps text-only pills inert","duration":4.273300000000063,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract renders solid weight trajectories with a wider invisible hover target and collision-aware labels","status":"passed","title":"renders solid weight trajectories with a wider invisible hover target and collision-aware labels","duration":5.320899999999938,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract keeps short-term status in the chat content flow and does not register a composer dock","status":"passed","title":"keeps short-term status in the chat content flow and does not register a composer dock","duration":3.79079999999999,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract binds display settings through the DSH 0.1.7 config form when available","status":"passed","title":"binds display settings through the DSH 0.1.7 config form when available","duration":2.56899999999996,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract defaults all chat status UI to visible and combines the master and child preferences","status":"passed","title":"defaults all chat status UI to visible and combines the master and child preferences","duration":15.428300000000036,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract maps progress and multiple persisted Blocks to only their real Turn positions","status":"passed","title":"maps progress and multiple persisted Blocks to only their real Turn positions","duration":16.234199999999987,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract routes session switches to the correct workspace and rebuilds status from persisted API data","status":"passed","title":"routes session switches to the correct workspace and rebuilds status from persisted API data","duration":14.491300000000024,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract keeps preview selection read-only and leaves the actual layer visibly marked","status":"passed","title":"keeps preview selection read-only and leaves the actual layer visibly marked","duration":2.1965000000000146,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract publishes adopted memory citations into the closing answer turn tail","status":"passed","title":"publishes adopted memory citations into the closing answer turn tail","duration":5.249000000000024,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract shows a quiet answer-tail note when retrieved memories were not adopted","status":"passed","title":"shows a quiet answer-tail note when retrieved memories were not adopted","duration":3.3262999999999465,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract keeps the project brand, mascot, usage count, and archived GitHub markup","status":"passed","title":"keeps the project brand, mascot, usage count, and archived GitHub markup","duration":2.5498000000000047,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract replaces the header community links with email contact and preserves the dormant Star link","status":"passed","title":"replaces the header community links with email contact and preserves the dormant Star link","duration":22.55269999999996,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract shows contact details and handles available clipboard without requiring a mail application","status":"passed","title":"shows contact details and handles available clipboard without requiring a mail application","duration":5.241499999999974,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract shows contact details and handles missing clipboard without requiring a mail application","status":"passed","title":"shows contact details and handles missing clipboard without requiring a mail application","duration":3.615699999999947,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract shows contact details and handles rejected clipboard without requiring a mail application","status":"passed","title":"shows contact details and handles rejected clipboard without requiring a mail application","duration":3.23599999999999,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract keeps contact details and manual fallback visible when desktop mail navigation throws","status":"passed","title":"keeps contact details and manual fallback visible when desktop mail navigation throws","duration":3.312000000000012,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract encodes an email subject while keeping the report out of the mailto URL","status":"passed","title":"encodes an email subject while keeping the report out of the mailto URL","duration":3.4336999999999307,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract retains a manual report fallback when the clipboard missing","status":"passed","title":"retains a manual report fallback when the clipboard missing","duration":2.788000000000011,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract retains a manual report fallback when the clipboard throws","status":"passed","title":"retains a manual report fallback when the clipboard throws","duration":4.566400000000044,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract retains a manual report fallback when the clipboard rejects","status":"passed","title":"retains a manual report fallback when the clipboard rejects","duration":2.6281999999999925,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract keeps the copied report and offers the email address when mail application launch fails","status":"passed","title":"keeps the copied report and offers the email address when mail application launch fails","duration":2.671699999999987,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract copies the visible feedback email address without opening a mail application","status":"passed","title":"copies the visible feedback email address without opening a mail application","duration":4.5625,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract uses the user-defined DSH Workspace title and keeps the compact header collision-free","status":"passed","title":"uses the user-defined DSH Workspace title and keeps the compact header collision-free","duration":2.4102000000000317,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract uses the memory-first three-part information architecture","status":"passed","title":"uses the memory-first three-part information architecture","duration":4.009100000000103,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract keeps exactly the four requested primary entries in More and nests diagnostics under Advanced","status":"passed","title":"keeps exactly the four requested primary entries in More and nests diagnostics under Advanced","duration":3.2351999999999634,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract copies the real data directory and sends the native open request from Advanced settings","status":"passed","title":"copies the real data directory and sends the native open request from Advanced settings","duration":4.100799999999936,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract shows eleven compact Profile rows on the primary page and no Profile editor in Advanced settings","status":"passed","title":"shows eleven compact Profile rows on the primary page and no Profile editor in Advanced settings","duration":10.552599999999984,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract keeps an existing home city visible without relabeling it as the temporary current city","status":"passed","title":"keeps an existing home city visible without relabeling it as the temporary current city","duration":3.5004000000000133,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract polls only while visible, keeps an edit draft, and saves only the current field after conflict resolution","status":"passed","title":"polls only while visible, keeps an edit draft, and saves only the current field after conflict resolution","duration":13.666500000000042,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract inherits the resolved light, dark, or system appearance from DSH theme tokens","status":"passed","title":"inherits the resolved light, dark, or system appearance from DSH theme tokens","duration":1.4086999999999534,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract keeps long-term memory summary-first and moves complex exploration to full screen","status":"passed","title":"keeps long-term memory summary-first and moves complex exploration to full screen","duration":1.9278000000000475,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract keeps the full-screen explorer anchored to the viewport","status":"passed","title":"keeps the full-screen explorer anchored to the viewport","duration":0.949799999999982,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract provides synchronized knowledge graph zoom controls","status":"passed","title":"provides synchronized knowledge graph zoom controls","duration":1.0741999999999052,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract makes graph and memory list truncation explicit and pageable","status":"passed","title":"makes graph and memory list truncation explicit and pageable","duration":1.9501000000000204,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract resets Event pagination when timeline search parameters change or clear","status":"passed","title":"resets Event pagination when timeline search parameters change or clear","duration":52.53730000000007,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract sizes graph nodes by stable long-term importance without conflating selection","status":"passed","title":"sizes graph nodes by stable long-term importance without conflating selection","duration":2.328800000000001,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract renders server-side Leiden communities with Cytoscape.js and fCoSE","status":"passed","title":"renders server-side Leiden communities with Cytoscape.js and fCoSE","duration":2.318899999999985,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract makes a well-supported workspace project larger than a sparsely mentioned tool","status":"passed","title":"makes a well-supported workspace project larger than a sparsely mentioned tool","duration":2.986599999999953,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract keeps all feedback data local and puts only the paste hint in email links","status":"passed","title":"keeps all feedback data local and puts only the paste hint in email links","duration":2.554899999999975,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract keeps an empty feedback page incomplete and formats structured AI drafts without guessing","status":"passed","title":"keeps an empty feedback page incomplete and formats structured AI drafts without guessing","duration":2.629099999999994,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract restores draft fields independently so a late GET cannot overwrite edited values","status":"passed","title":"restores draft fields independently so a late GET cannot overwrite edited values","duration":3.124500000000012,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract shows a persistent top AI-copy notice with retry, close, sticky, and scroll visibility handling","status":"passed","title":"shows a persistent top AI-copy notice with retry, close, sticky, and scroll visibility handling","duration":6.74369999999999,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract builds complete option-controlled reports without the former 4500 character truncation","status":"passed","title":"builds complete option-controlled reports without the former 4500 character truncation","duration":3.40300000000002,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract redacts nested sensitive values without breaking the attached JSON or recent errors","status":"passed","title":"redacts nested sensitive values without breaking the attached JSON or recent errors","duration":2.9839000000000624,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract redacts complete free-text credentials without damaging JSON","status":"passed","title":"redacts complete free-text credentials without damaging JSON","duration":3.1147000000000844,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract copies the frozen report and opens an Issue URL containing only title and the paste hint","status":"passed","title":"copies the frozen report and opens an Issue URL containing only title and the paste hint","duration":3.582200000000057,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract keeps copying and email activation separate while draft saving is pending","status":"passed","title":"keeps copying and email activation separate while draft saving is pending","duration":2.9507999999999583,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract shows the report only on demand and reuses the exact preview for copy and download","status":"passed","title":"shows the report only on demand and reuses the exact preview for copy and download","duration":9.576400000000035,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract keeps failures reassuring and exposes related Block settings under More","status":"passed","title":"keeps failures reassuring and exposes related Block settings under More","duration":3.6585000000000036,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract uses one actionable status bar for background processing and retryable failures","status":"passed","title":"uses one actionable status bar for background processing and retryable failures","duration":2.9039999999999964,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract does not warn before a workspace memory snapshot exists (undefined)","status":"passed","title":"does not warn before a workspace memory snapshot exists (undefined)","duration":3.4184000000000196,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract does not warn before a workspace memory snapshot exists (null)","status":"passed","title":"does not warn before a workspace memory snapshot exists (null)","duration":3.145399999999995,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract does not warn before a workspace memory snapshot exists ({})","status":"passed","title":"does not warn before a workspace memory snapshot exists ({})","duration":3.2292999999999665,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract does not warn before a workspace memory snapshot exists ({\"graphMigration\":null})","status":"passed","title":"does not warn before a workspace memory snapshot exists ({\"graphMigration\":null})","duration":2.8047000000000253,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract preserves real task notices when Event counts are missing or zero","status":"passed","title":"preserves real task notices when Event counts are missing or zero","duration":3.190399999999954,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract keeps the empty long-term graph view quiet while preserving actual graph work","status":"passed","title":"keeps the empty long-term graph view quiet while preserving actual graph work","duration":22.29200000000003,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract keeps the empty long-term timeline view quiet while preserving actual graph work","status":"passed","title":"keeps the empty long-term timeline view quiet while preserving actual graph work","duration":17.923700000000053,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract renders separate product states for summary, extraction, and graph work","status":"passed","title":"renders separate product states for summary, extraction, and graph work","duration":3.94380000000001,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract separates status refresh from per-job retry with explicit feedback","status":"passed","title":"separates status refresh from per-job retry with explicit feedback","duration":2.5661999999999807,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract shows clipboard failure immediately without waiting for draft persistence","status":"passed","title":"shows clipboard failure immediately without waiting for draft persistence","duration":3.4319999999999027,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract keeps Event Extraction and Graph Projection separate in the status details","status":"passed","title":"keeps Event Extraction and Graph Projection separate in the status details","duration":52.83870000000002,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract uses the clicked stage for detail titles and only exposes terminal retry actions","status":"passed","title":"uses the clicked stage for detail titles and only exposes terminal retry actions","duration":5.128699999999981,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate Web client contract"],"fullName":"StrataGate Web client contract does not claim legacy background work is empty when the old server omits job details","status":"passed","title":"does not claim legacy background work is empty when the old server omits job details","duration":4.096400000000017,"failureMessages":[],"meta":{}}],"startTime":1791874733781,"endTime":1791874734267.0964,"status":"passed","message":"","name":"C:/Users/19007/Documents/StrataGate/tests/client.test.ts"},{"assertionResults":[{"ancestorTitles":["StrataGate admin routes"],"fullName":"StrataGate admin routes exposes optional Event metadata while keeping legacy API cards unchanged","status":"passed","title":"exposes optional Event metadata while keeping legacy API cards unchanged","duration":5.528099999999995,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate admin routes"],"fullName":"StrataGate admin routes reports and opens only the configured StrataGate data directory","status":"passed","title":"reports and opens only the configured StrataGate data directory","duration":0.5332000000000789,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate admin routes"],"fullName":"StrataGate admin routes reads and saves local feedback drafts through the feedback route","status":"passed","title":"reads and saves local feedback drafts through the feedback route","duration":0.6374000000000706,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate admin routes"],"fullName":"StrataGate admin routes lists agent-recorded memories through a read-only route","status":"passed","title":"lists agent-recorded memories through a read-only route","duration":0.46329999999989013,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate admin routes"],"fullName":"StrataGate admin routes supports preview, commit, and undo through the import route","status":"passed","title":"supports preview, commit, and undo through the import route","duration":1.1304000000000087,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate admin routes"],"fullName":"StrataGate admin routes serves the complete external memory export prompt","status":"passed","title":"serves the complete external memory export prompt","duration":0.3728000000000975,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate admin routes"],"fullName":"StrataGate admin routes does not label a block without an extraction job as actively processing","status":"passed","title":"does not label a block without an extraction job as actively processing","duration":2.636900000000196,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate admin routes"],"fullName":"StrataGate admin routes reports Summary jobs in overview and Block processing state","status":"passed","title":"reports Summary jobs in overview and Block processing state","duration":14.555200000000013,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate admin routes"],"fullName":"StrataGate admin routes ignores legacy Element projection jobs and separates terminal extraction and graph failures","status":"passed","title":"ignores legacy Element projection jobs and separates terminal extraction and graph failures","duration":1.432399999999916,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate admin routes"],"fullName":"StrataGate admin routes rejects Block Summary retries while the job is not failed","status":"passed","title":"rejects Block Summary retries while the job is not failed","duration":0.24299999999993815,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate admin routes"],"fullName":"StrataGate admin routes retries a specific failed job through the unified endpoint and reports model failures","status":"passed","title":"retries a specific failed job through the unified endpoint and reports model failures","duration":2.0190999999999804,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate admin routes"],"fullName":"StrataGate admin routes summarizes namespaces and returns paginated memories","status":"passed","title":"summarizes namespaces and returns paginated memories","duration":4.613299999999981,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate admin routes"],"fullName":"StrataGate admin routes filters the complete Event timeline before pagination","status":"passed","title":"filters the complete Event timeline before pagination","duration":30.167599999999993,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate admin routes"],"fullName":"StrataGate admin routes serves one revision-aware dashboard snapshot and returns 304 when unchanged","status":"passed","title":"serves one revision-aware dashboard snapshot and returns 304 when unchanged","duration":4.766599999999926,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate admin routes"],"fullName":"StrataGate admin routes builds Event weight trajectories from real adoption receipts and the core weight function","status":"passed","title":"builds Event weight trajectories from real adoption receipts and the core weight function","duration":3.340900000000147,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate admin routes"],"fullName":"StrataGate admin routes keeps the adoption count but hides incomplete legacy receipt history","status":"passed","title":"keeps the adoption count but hides incomplete legacy receipt history","duration":0.8138000000001284,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate admin routes"],"fullName":"StrataGate admin routes does not turn a retrieval timestamp into a weight reinforcement node","status":"passed","title":"does not turn a retrieval timestamp into a weight reinforcement node","duration":0.5184999999999036,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate admin routes"],"fullName":"StrataGate admin routes uses a dashed bounded trend for a migrated Event with a delayed legacy weight anchor","status":"passed","title":"uses a dashed bounded trend for a migrated Event with a delayed legacy weight anchor","duration":1.062900000000127,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate admin routes"],"fullName":"StrataGate admin routes draws every confirmed adoption and a solid tail when older adoption turns are missing","status":"passed","title":"draws every confirmed adoption and a solid tail when older adoption turns are missing","duration":1.8170999999999822,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate admin routes"],"fullName":"StrataGate admin routes merges multiple adoptions in the same turn into one trajectory node","status":"passed","title":"merges multiple adoptions in the same turn into one trajectory node","duration":0.571999999999889,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate admin routes"],"fullName":"StrataGate admin routes falls back from formedTurn to source Block, earliest adoption, then current-only","status":"passed","title":"falls back from formedTurn to source Block, earliest adoption, then current-only","duration":1.0472999999999502,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate admin routes"],"fullName":"StrataGate admin routes changes the dashboard ETag when the plugin version changes without a memory revision change","status":"passed","title":"changes the dashboard ETag when the plugin version changes without a memory revision change","duration":1.5829000000001088,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate admin routes"],"fullName":"StrataGate admin routes filters short-term Blocks and the open tail by the selected conversation","status":"passed","title":"filters short-term Blocks and the open tail by the selected conversation","duration":1.0140999999998712,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate admin routes"],"fullName":"StrataGate admin routes maps Block and open progress to receipt-backed DSH Turn numbers when turns have gaps","status":"passed","title":"maps Block and open progress to receipt-backed DSH Turn numbers when turns have gaps","duration":0.7044000000000779,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate admin routes"],"fullName":"StrataGate admin routes recovers legacy conversation boundaries from ingestion receipts without rewriting mixed Blocks","status":"passed","title":"recovers legacy conversation boundaries from ingestion receipts without rewriting mixed Blocks","duration":1.386600000000044,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate admin routes"],"fullName":"StrataGate admin routes expands source evidence with server-side secret redaction","status":"passed","title":"expands source evidence with server-side secret redaction","duration":0.5434999999999945,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate admin routes"],"fullName":"StrataGate admin routes returns only participant node ids with aliases for Event participant pills","status":"passed","title":"returns only participant node ids with aliases for Event participant pills","duration":1.136700000000019,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate admin routes"],"fullName":"StrataGate admin routes reports the actual decayed layer and its size relative to L5","status":"passed","title":"reports the actual decayed layer and its size relative to L5","duration":0.41840000000001965,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate admin routes"],"fullName":"StrataGate admin routes rebuilds deterministic preview layers for Blocks stored by older versions","status":"passed","title":"rebuilds deterministic preview layers for Blocks stored by older versions","duration":0.39629999999988286,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate admin routes"],"fullName":"StrataGate admin routes exposes sealed-but-pending Block compression state separately from long-term processing","status":"passed","title":"exposes sealed-but-pending Block compression state separately from long-term processing","duration":0.33750000000009095,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate admin routes"],"fullName":"StrataGate admin routes returns the adopted graph node with its directly related graph neighborhood","status":"passed","title":"returns the adopted graph node with its directly related graph neighborhood","duration":0.5353000000000065,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate admin routes"],"fullName":"StrataGate admin routes filters forgotten Graph metadata and Events from citation source details","status":"passed","title":"filters forgotten Graph metadata and Events from citation source details","duration":0.5576000000000931,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate admin routes"],"fullName":"StrataGate admin routes expands a block into its organized events and elements","status":"passed","title":"expands a block into its organized events and elements","duration":0.7123000000001412,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate admin routes"],"fullName":"StrataGate admin routes actively lifts a Block to one requested layer","status":"passed","title":"actively lifts a Block to one requested layer","duration":0.5242000000000644,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate admin routes"],"fullName":"StrataGate admin routes links answer audit records to events and original messages","status":"passed","title":"links answer audit records to events and original messages","duration":0.23730000000000473,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate admin routes"],"fullName":"StrataGate admin routes keeps per-request caps while allowing later memory and audit pages","status":"passed","title":"keeps per-request caps while allowing later memory and audit pages","duration":0.479799999999841,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate admin routes"],"fullName":"StrataGate admin routes updates the global Block settings while memory routes remain read-only","status":"passed","title":"updates the global Block settings while memory routes remain read-only","duration":0.5613999999998214,"failureMessages":[],"meta":{}},{"ancestorTitles":["StrataGate admin routes"],"fullName":"StrataGate admin routes reads and updates one shared Profile field from Settings","status":"passed","title":"reads and updates one shared Profile field from Settings","duration":1.8679999999999382,"failureMessages":[],"meta":{}}],"startTime":1791874734476,"endTime":1791874734567.868,"status":"passed","message":"","name":"C:/Users/19007/Documents/StrataGate/tests/web.test.ts"}]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "stratagate-dsh",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.12",
|
|
4
4
|
"description": "Recent conversations stay vivid. Older ones fade into summaries, not oblivion. StrataGate gives DeepSeek Harness six-layer, time-decaying memory, while lasting events and relationships settle into a knowledge graph. Bring your memories from other AIs with you—no need to start over.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|