shennian 0.5.44 → 0.5.46

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 (39) hide show
  1. package/dist/publish-build-manifest.json +109 -49
  2. package/dist/src/agents/claude-permission-protocol.js +1 -1
  3. package/dist/src/agents/claude-permission-relay-server.js +3 -3
  4. package/dist/src/agents/claude.js +7 -7
  5. package/dist/src/agents/codex-runtime.js +10 -9
  6. package/dist/src/agents/codex-user-input-requests.js +3 -0
  7. package/dist/src/agents/project-client.js +1 -1
  8. package/dist/src/agents/shennian.js +2 -2
  9. package/dist/src/commands/english.js +3 -0
  10. package/dist/src/commands/project-coordination.js +3 -0
  11. package/dist/src/commands/project.js +2 -2
  12. package/dist/src/commands/setup.js +3 -3
  13. package/dist/src/commands/steward.js +4 -4
  14. package/dist/src/guides/personal.js +2 -2
  15. package/dist/src/index.js +3 -3
  16. package/dist/src/personal-agent/sdk-session.js +2 -2
  17. package/dist/src/personal-agent/system-prompt.js +1 -1
  18. package/dist/src/project-coordination/admission.js +1 -0
  19. package/dist/src/project-coordination/http.js +1 -0
  20. package/dist/src/project-coordination/ipc.js +1 -0
  21. package/dist/src/project-coordination/runtime.js +8 -0
  22. package/dist/src/project-coordination/store.js +4 -0
  23. package/dist/src/project-coordination/uploads.js +1 -0
  24. package/dist/src/project-coordination/workbench-page.js +65 -0
  25. package/dist/src/schedules/reminder-client.js +1 -1
  26. package/dist/src/session/handlers/chat-abort.js +1 -0
  27. package/dist/src/session/handlers/chat-events.js +2 -2
  28. package/dist/src/session/handlers/chat.js +2 -2
  29. package/dist/src/session/handlers/personal-workspace.js +1 -1
  30. package/dist/src/session/manager.js +1 -1
  31. package/dist/src/session/queue-persistence.js +1 -0
  32. package/dist/src/session/queue.js +1 -1
  33. package/dist/src/steward/configure.js +1 -1
  34. package/dist/src/steward/onboarding.js +1 -1
  35. package/dist/src/steward/session.js +2 -2
  36. package/dist/src/steward/settings.js +1 -1
  37. package/dist/src/steward/templates.js +29 -8
  38. package/dist/src/steward/workspace.js +1 -1
  39. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- import{STEWARD_REMINDER_INSTRUCTIONS as n}from"../schedules/reminder-client.js";import{FEATURE_GUIDE_INSTRUCTIONS as i}from"../guides/catalog.js";import S from"node:fs";import d from"node:path";import{listSessionRecords as p}from"../session/store.js";import{StewardWorkspaceError as o,ensureStewardWorkspace as a}from"./workspace.js";import{STEWARD_INDEX_ONBOARDING as c}from"./onboarding.js";import{issuePersonalScheduleContext as w,STEWARD_SCHEDULE_INSTRUCTIONS as m}from"../schedules/personal-context.js";const E="SHENNIAN_STEWARD_SESSION_ID",R=2e4,h=["\u4F60\u662F\u795E\u5FF5\u7BA1\u5BB6\uFF0C\u5728\u7528\u6237\u9009\u5B9A\u7684\u8FD9\u53F0\u7535\u8111\u4E0A\u5DE5\u4F5C\u3002\u5148\u8BFB\u5F53\u524D\u76EE\u5F55\u7684 AGENTS.md\uFF0C\u518D\u6309\u9700\u8BFB index.md\u3002",'\u7528\u6237\u53EA\u770B\u5230\u4F60\u7528 shennian steward say "\u8981\u7ED9\u7528\u6237\u770B\u7684\u8BDD" \u53D1\u51FA\u7684\u6D88\u606F\uFF0C\u5176\u4F59\u8F93\u51FA\u7528\u6237\u90FD\u770B\u4E0D\u5230\u3002\u6536\u5230\u8BF7\u6C42\u5148\u7528 say \u56DE\u5E94\u4E00\u53E5\uFF0C\u5904\u7406\u5B8C\u518D say \u7ED3\u679C\u3002',"\u82E5\u672C\u8F6E\u5E94\u9996\u6B21\u9080\u8BF7\u5EFA\u7ACB\u8D44\u6599\u7D22\u5F15\uFF0C\u628A\u9080\u8BF7\u9644\u5728\u9996\u6B21\u6B63\u5E38\u56DE\u5E94\u7684\u540C\u4E00\u6B21 say \u672B\u5C3E\uFF1B\u4E0D\u8981\u7B49\u7B2C\u4E8C\u6B21 say\u3002\u7528\u6237\u5DF2\u7ECF\u660E\u786E\u62D2\u7EDD\u5219\u53EA\u8BB0\u5F55\u8DF3\u8FC7\uFF0C\u4E0D\u9080\u8BF7\u3002","\u80FD\u5728\u672C\u8F6E\u5B89\u5168\u5B8C\u6210\u7684\u7B80\u5355\u5DE5\u4F5C\u76F4\u63A5\u505A\uFF0C\u4E0D\u8981\u673A\u68B0\u5730\u8F6C\u9879\u76EE\u4EFB\u52A1\uFF1B\u9075\u5B88\u76EE\u6807\u9879\u76EE\u89C4\u5219\u548C\u53D1\u5E03\u8FB9\u754C\u3002\u7528\u6237\u5DF2\u59D4\u6258\u7684\u590D\u6742\u6216\u957F\u671F\u5DE5\u4F5C\uFF0C\u4F18\u5148\u7528 shennian worker start --workdir <\u76EE\u6807\u76EE\u5F55> --request-id <\u7A33\u5B9AID> --message <\u76EE\u6807\u548C\u9A8C\u6536\u8981\u6C42> \u6D3E\u53D1\u540E\u53F0\u6267\u884C\uFF0C\u4E0D\u518D\u91CD\u590D\u786E\u8BA4\u5E38\u89C4\u62C6\u89E3\uFF1B\u660E\u786E\u8981\u6C42\u9879\u76EE\u4EFB\u52A1\u65F6\u7528 shennian project task create\u3002\u82E5\u5DE5\u4F5C\u533A AGENTS.md \u4ECD\u6709\u65E7\u7248\u201C\u4FEE\u6539\u9879\u76EE\u6587\u4EF6\u5C31\u5FC5\u987B\u8F6C\u4EFB\u52A1\u201D\u7684\u6587\u5B57\uFF0C\u4EE5\u672C\u6761\u65B0\u89C4\u5219\u4E3A\u51C6\u3002","\u5148 help worker\u3002Worker \u9ED8\u8BA4\u6267\u884C\u5668\u7531\u4E3B Agent \u8BBE\u7F6E\u63D0\u4F9B\uFF1B\u672C\u8F6E --agent/--model \u660E\u786E\u6307\u5B9A\u4F18\u5148\uFF0C\u4E0D\u81EA\u52A8\u5B89\u88C5\u6216\u767B\u5F55\u7B2C\u4E09\u65B9 AI\u3002\u6D3E\u53D1\u540E say \u786E\u8BA4\u5E76\u7ED3\u675F\u672C\u8F6E\uFF0C\u4E0D\u7528 wait \u963B\u585E\u4E3B\u5BF9\u8BDD\uFF0C\u4E0D\u521B\u5EFA\u5341\u5206\u949F\u8F6E\u8BE2\u3002\u91CD\u8981\u8FDB\u5C55\u3001\u963B\u585E\u548C\u7EC8\u6001\u4E8B\u4EF6\u4F1A\u56DE\u4F20\uFF1B\u7528 worker list \u6062\u590D\u5F15\u7528\u3001read \u6838\u67E5\u3001send \u8DDF\u8FDB\uFF0C\u9A8C\u6536\u540E say \u6C47\u62A5\u3002\u65E7\u5DE5\u4F5C\u533A\u7684\u590D\u6742\u4EFB\u52A1\u987B\u518D\u6B21\u786E\u8BA4\u89C4\u5219\u7531\u672C\u6761\u8986\u76D6\uFF0C\u9AD8\u5F71\u54CD\u52A8\u4F5C\u6388\u6743\u4E0D\u53D8\u3002","\u9879\u76EE\u53EF\u7528 project create --machine <\u7CBE\u786E\u673A\u5668ID> --workdir <\u7EDD\u5BF9\u76EE\u5F55> [--name <\u540D\u79F0>] \u521B\u5EFA\uFF0C\u7528 project update \u4FEE\u6539\u540D\u79F0\u6216\u9ED8\u8BA4\u6267\u884C\u5668\uFF0C\u4E0D\u79FB\u52A8\u6587\u4EF6\u3002\u8DE8\u7535\u8111\u5DE5\u4F5C\u5728\u7CBE\u786E\u9879\u76EE\u4E0B project task create\uFF0C\u68C0\u67E5 tracking.enabled\uFF1B\u5931\u8D25\u7528 project task watch \u8865\u63A5\u539F task-id\uFF0C\u4E0D\u91CD\u590D\u521B\u5EFA\u3002\u540E\u53F0\u4EFB\u52A1\u72B6\u6001\u56DE\u4F20\u4ECD\u9700 read \u6838\u5BF9\u540E say \u6C47\u62A5\u3002","\u7ED9\u624B\u673A\u7528\u6237\u5C55\u793A\u5DF2\u5199\u5165\u5E76\u8BFB\u56DE\u6838\u5BF9\u7684\u65E5\u8BB0\u65F6\uFF0C\u7528 [\u67E5\u770B\u65E5\u8BB0](shennian://diary/YYYY-MM-DD)\uFF0C\u66FF\u6362\u4E3A\u5B9E\u9645\u65E5\u671F\u3002\u5176\u4ED6\u672C\u673A\u6587\u4EF6\u7528 Markdown \u6587\u4EF6\u94FE\u63A5\uFF0C\u4E0D\u8BA9\u7528\u6237\u628A\u7535\u8111\u8DEF\u5F84\u590D\u5236\u5230\u624B\u673A\u6D4F\u89C8\u5668\u3002\u540E\u53F0 Worker \u7684\u6765\u6E90\u901A\u77E5\u53EF\u76F4\u63A5\u5230\u8FBE\u6B64\u5BF9\u8BDD\uFF1B\u5FEB\u7167\u4F1A\u63D0\u4F9B\u6700\u8FD1\u6D88\u606F\uFF0C\u6309\u9700\u6838\u5BF9\uFF0C\u4E0D\u5FC5\u4E3A\u6BCF\u6761\u901A\u77E5\u518D\u8F6C\u8FF0\u3002",i,m,n,c].join(`
2
- `);function _(r){return p().some(e=>e.sessionId===r&&e.sessionScope==="steward")}function l(r){return _(r)?{[E]:r,SHENNIAN_SCHEDULE_CONTEXT:w(r)}:{}}function s(r){return process.platform==="win32"||process.platform==="darwin"?r.toLowerCase():r}function W(){return a().dir}function x(r){const e=a().dir;let t;try{t=S.realpathSync.native(d.resolve(r))}catch{throw new o("steward_workdir_invalid","The steward must run in its fixed workspace.")}if(s(t)!==s(e))throw new o("steward_workdir_invalid","The steward must run in its fixed workspace.");return e}export{R as STEWARD_SAY_MAX_CHARS,E as STEWARD_SESSION_ID_ENV,h as STEWARD_SYSTEM_PROMPT,x as assertStewardWorkDir,_ as isStewardSessionId,W as pinStewardWorkDir,l as stewardSessionEnv};
1
+ import{STEWARD_REMINDER_INSTRUCTIONS as n}from"../schedules/reminder-client.js";import{FEATURE_GUIDE_INSTRUCTIONS as i}from"../guides/catalog.js";import S from"node:fs";import d from"node:path";import{listSessionRecords as p}from"../session/store.js";import{StewardWorkspaceError as o,ensureStewardWorkspace as a}from"./workspace.js";import{STEWARD_INDEX_ONBOARDING as c}from"./onboarding.js";import{STEWARD_MAIN_AGENT_RULES as E,STEWARD_PRODUCT_CAPABILITIES as w}from"./templates.js";import{issuePersonalScheduleContext as m,STEWARD_SCHEDULE_INSTRUCTIONS as _}from"../schedules/personal-context.js";const T="SHENNIAN_STEWARD_SESSION_ID",W=2e4,x=["\u4F60\u662F\u795E\u5FF5\uFF0C\u662F\u7528\u6237\u7684\u4E3B Agent\uFF0C\u5728\u7528\u6237\u9009\u5B9A\u7684\u8FD9\u53F0\u7535\u8111\u4E0A\u5DE5\u4F5C\u3002\u5148\u8BFB\u5F53\u524D\u76EE\u5F55\u7684 AGENTS.md\uFF0C\u518D\u6309\u9700\u8BFB index.md\u3002",'\u7528\u6237\u53EA\u770B\u5230\u4F60\u7528 shennian steward say "\u8981\u7ED9\u7528\u6237\u770B\u7684\u8BDD" \u53D1\u51FA\u7684\u6D88\u606F\uFF0C\u5176\u4F59\u8F93\u51FA\u7528\u6237\u90FD\u770B\u4E0D\u5230\u3002\u6536\u5230\u8BF7\u6C42\u5148\u7528 say \u56DE\u5E94\u4E00\u53E5\uFF0C\u5904\u7406\u5B8C\u518D say \u7ED3\u679C\u3002',"\u82E5\u672C\u8F6E\u5E94\u9996\u6B21\u9080\u8BF7\u5EFA\u7ACB\u8D44\u6599\u7D22\u5F15\uFF0C\u628A\u9080\u8BF7\u9644\u5728\u9996\u6B21\u6B63\u5E38\u56DE\u5E94\u7684\u540C\u4E00\u6B21 say \u672B\u5C3E\uFF1B\u4E0D\u8981\u7B49\u7B2C\u4E8C\u6B21 say\u3002\u7528\u6237\u5DF2\u7ECF\u660E\u786E\u62D2\u7EDD\u5219\u53EA\u8BB0\u5F55\u8DF3\u8FC7\uFF0C\u4E0D\u9080\u8BF7\u3002","\u80FD\u5728\u672C\u8F6E\u5B89\u5168\u5B8C\u6210\u7684\u7B80\u5355\u5DE5\u4F5C\u76F4\u63A5\u505A\uFF0C\u4E0D\u8981\u673A\u68B0\u5730\u8F6C\u9879\u76EE\u4EFB\u52A1\uFF1B\u9075\u5B88\u76EE\u6807\u9879\u76EE\u89C4\u5219\u548C\u53D1\u5E03\u8FB9\u754C\u3002\u7528\u6237\u5DF2\u59D4\u6258\u7684\u590D\u6742\u6216\u957F\u671F\u5DE5\u4F5C\uFF0C\u4F18\u5148\u7528 shennian worker start --workdir <\u76EE\u6807\u76EE\u5F55> --request-id <\u7A33\u5B9AID> --message <\u76EE\u6807\u548C\u9A8C\u6536\u8981\u6C42> \u6D3E\u53D1\u540E\u53F0\u6267\u884C\uFF0C\u4E0D\u518D\u91CD\u590D\u786E\u8BA4\u5E38\u89C4\u62C6\u89E3\uFF1B\u660E\u786E\u8981\u6C42\u9879\u76EE\u4EFB\u52A1\u65F6\u7528 shennian project task create\u3002\u82E5\u5DE5\u4F5C\u533A AGENTS.md \u4ECD\u6709\u65E7\u7248\u201C\u4FEE\u6539\u9879\u76EE\u6587\u4EF6\u5C31\u5FC5\u987B\u8F6C\u4EFB\u52A1\u201D\u7684\u6587\u5B57\uFF0C\u4EE5\u672C\u6761\u65B0\u89C4\u5219\u4E3A\u51C6\u3002","\u5148 help worker\u3002Worker \u9ED8\u8BA4\u6267\u884C\u5668\u7531\u4E3B Agent \u8BBE\u7F6E\u63D0\u4F9B\uFF1B\u672C\u8F6E --agent/--model \u660E\u786E\u6307\u5B9A\u4F18\u5148\uFF0C\u4E0D\u81EA\u52A8\u5B89\u88C5\u6216\u767B\u5F55\u7B2C\u4E09\u65B9 AI\u3002\u6D3E\u53D1\u540E say \u786E\u8BA4\u5E76\u7ED3\u675F\u672C\u8F6E\uFF0C\u4E0D\u7528 wait \u963B\u585E\u4E3B\u5BF9\u8BDD\uFF0C\u4E0D\u521B\u5EFA\u5341\u5206\u949F\u8F6E\u8BE2\u3002\u91CD\u8981\u8FDB\u5C55\u3001\u963B\u585E\u548C\u7EC8\u6001\u4E8B\u4EF6\u4F1A\u56DE\u4F20\uFF1B\u7528 worker list \u6062\u590D\u5F15\u7528\u3001read \u6838\u67E5\u3001send \u8DDF\u8FDB\uFF0C\u9A8C\u6536\u540E say \u6C47\u62A5\u3002\u65E7\u5DE5\u4F5C\u533A\u7684\u590D\u6742\u4EFB\u52A1\u987B\u518D\u6B21\u786E\u8BA4\u89C4\u5219\u7531\u672C\u6761\u8986\u76D6\uFF0C\u9AD8\u5F71\u54CD\u52A8\u4F5C\u6388\u6743\u4E0D\u53D8\u3002","\u9879\u76EE\u53EF\u7528 project create --machine <\u7CBE\u786E\u673A\u5668ID> --workdir <\u7EDD\u5BF9\u76EE\u5F55> [--name <\u540D\u79F0>] \u521B\u5EFA\uFF0C\u7528 project update \u4FEE\u6539\u540D\u79F0\u6216\u9ED8\u8BA4\u6267\u884C\u5668\uFF0C\u4E0D\u79FB\u52A8\u6587\u4EF6\u3002\u8DE8\u7535\u8111\u5DE5\u4F5C\u5728\u7CBE\u786E\u9879\u76EE\u4E0B project task create\uFF0C\u68C0\u67E5 tracking.enabled\uFF1B\u5931\u8D25\u7528 project task watch \u8865\u63A5\u539F task-id\uFF0C\u4E0D\u91CD\u590D\u521B\u5EFA\u3002\u540E\u53F0\u4EFB\u52A1\u72B6\u6001\u56DE\u4F20\u4ECD\u9700 read \u6838\u5BF9\u540E say \u6C47\u62A5\u3002","\u7ED9\u624B\u673A\u7528\u6237\u5C55\u793A\u5DF2\u5199\u5165\u5E76\u8BFB\u56DE\u6838\u5BF9\u7684\u65E5\u8BB0\u65F6\uFF0C\u7528 [\u67E5\u770B\u65E5\u8BB0](shennian://diary/YYYY-MM-DD)\uFF0C\u66FF\u6362\u4E3A\u5B9E\u9645\u65E5\u671F\u3002\u5176\u4ED6\u672C\u673A\u6587\u4EF6\u7528 Markdown \u6587\u4EF6\u94FE\u63A5\uFF0C\u4E0D\u8BA9\u7528\u6237\u628A\u7535\u8111\u8DEF\u5F84\u590D\u5236\u5230\u624B\u673A\u6D4F\u89C8\u5668\u3002\u540E\u53F0 Worker \u7684\u6765\u6E90\u901A\u77E5\u53EF\u76F4\u63A5\u5230\u8FBE\u6B64\u5BF9\u8BDD\uFF1B\u5FEB\u7167\u4F1A\u63D0\u4F9B\u6700\u8FD1\u6D88\u606F\uFF0C\u6309\u9700\u6838\u5BF9\uFF0C\u4E0D\u5FC5\u4E3A\u6BCF\u6761\u901A\u77E5\u518D\u8F6C\u8FF0\u3002",E,w,i,_,n,c].join(`
2
+ `);function A(r){return p().some(e=>e.sessionId===r&&e.sessionScope==="steward")}function y(r){return A(r)?{[T]:r,SHENNIAN_SCHEDULE_CONTEXT:m(r)}:{}}function s(r){return process.platform==="win32"||process.platform==="darwin"?r.toLowerCase():r}function C(){return a().dir}function O(r){const e=a().dir;let t;try{t=S.realpathSync.native(d.resolve(r))}catch{throw new o("steward_workdir_invalid","The steward must run in its fixed workspace.")}if(s(t)!==s(e))throw new o("steward_workdir_invalid","The steward must run in its fixed workspace.");return e}export{W as STEWARD_SAY_MAX_CHARS,T as STEWARD_SESSION_ID_ENV,x as STEWARD_SYSTEM_PROMPT,O as assertStewardWorkDir,A as isStewardSessionId,C as pinStewardWorkDir,y as stewardSessionEnv};
@@ -1,2 +1,2 @@
1
- import o from"node:fs";import s from"node:os";import n from"node:path";import{randomUUID as a}from"node:crypto";import{getShennianDir as t}from"../config/index.js";const i=()=>n.join(t(),"personal-paths.json");function m(){try{const r=JSON.parse(o.readFileSync(i(),"utf8"));if(!r||typeof r!="object"||Array.isArray(r))throw new Error;for(const e of["workspace","diary"])if(r[e]!==void 0&&(typeof r[e]!="string"||!n.isAbsolute(r[e])))throw new Error;return{workspace:r.workspace,diary:r.diary}}catch(r){if(r.code==="ENOENT")return{};throw new Error("personal_settings_invalid")}}function d(){const r=`${t()}-steward`;return o.existsSync(r)||process.env.SHENNIAN_HOME||process.env.VITEST?r:n.join(s.homedir(),"shennian_agent")}function u(r){o.mkdirSync(t(),{recursive:!0,mode:448});const e=`${i()}.${a()}.tmp`;try{o.writeFileSync(e,JSON.stringify(r,null,2)+`
1
+ import o from"node:fs";import s from"node:os";import n from"node:path";import{randomUUID as a}from"node:crypto";import{getShennianDir as t}from"../config/index.js";const i=()=>n.join(t(),"personal-paths.json");function m(){try{const r=JSON.parse(o.readFileSync(i(),"utf8"));if(!r||typeof r!="object"||Array.isArray(r))throw new Error;for(const e of["workspace","diary"])if(r[e]!==void 0&&(typeof r[e]!="string"||!n.isAbsolute(r[e])))throw new Error;return{workspace:r.workspace,diary:r.diary}}catch(r){if(r.code==="ENOENT")return{};throw new Error("personal_settings_invalid")}}function d(){const r=`${t()}-steward`;return o.existsSync(r)||process.env.SHENNIAN_HOME||process.env.VITEST?r:n.join(s.homedir(),"shennian-agent")}function u(r){o.mkdirSync(t(),{recursive:!0,mode:448});const e=`${i()}.${a()}.tmp`;try{o.writeFileSync(e,JSON.stringify(r,null,2)+`
2
2
  `,{mode:384,flag:"wx"}),o.renameSync(e,i())}finally{try{o.unlinkSync(e)}catch{}}}export{d as defaultWorkspace,m as readPersonalPaths,u as savePersonalPaths};
@@ -1,7 +1,28 @@
1
- import{STEWARD_INDEX_ONBOARDING as n}from"./onboarding.js";const e=5,s=`<!-- shennian-steward-template: ${e} -->
2
- # \u795E\u5FF5\u7BA1\u5BB6
1
+ import{STEWARD_INDEX_ONBOARDING as n}from"./onboarding.js";const e=6,t=`## \u4E3B Agent \u8EAB\u4EFD\u4E0E\u76EE\u5F55
3
2
 
4
- \u4F60\u662F\u795E\u5FF5\u7BA1\u5BB6\uFF0C\u662F\u7528\u6237\u5728\u8FD9\u53F0\u7535\u8111\u4E0A\u7684\u4E2A\u4EBA\u8C03\u5EA6\u8005\u3002\u4F60\u7684\u5DE5\u4F5C\u76EE\u5F55\u662F\u672C\u76EE\u5F55\uFF1B\u5148\u8BFB index.md\uFF0C\u53EA\u6CBF\u4E0E\u672C\u6B21\u95EE\u9898\u76F8\u5173\u7684\u94FE\u63A5\u8BFB\u53D6\uFF0C\u4E0D\u626B\u63CF\u6574\u4E2A\u78C1\u76D8\u3002
3
+ - \u4F60\u7684\u540D\u79F0\u7EDF\u4E00\u4E3A\u201C\u795E\u5FF5\u201D\uFF0C\u662F\u7528\u6237\u7684\u4E3B Agent\u3002\u4E0D\u8981\u4E3B\u52A8\u8BE2\u95EE\u7528\u6237\u7ED9 AI \u8D77\u540D\uFF0C\u4E0D\u628A\u5E95\u5C42\u6267\u884C\u5668\u6216\u5386\u53F2\u5DE5\u4F5C\u533A\u540D\u79F0\u5F53\u4F5C\u52A9\u624B\u540D\u79F0\u3002
4
+ - \u672C\u76EE\u5F55\u662F\u4E3B Agent \u7684\u914D\u7F6E\u3001\u8D44\u6599\u5BFC\u822A\u4E0E\u8BB0\u5FC6\u5165\u53E3\uFF1B\u6839\u76EE\u5F55\u9ED8\u8BA4\u53EA\u521B\u5EFA AGENTS.md\u3001CLAUDE.md\u3001index.md\u3002CLAUDE.md \u4EC5\u5F15\u7528 AGENTS.md\uFF0C\u89C4\u5219\u7EF4\u62A4\u5728 AGENTS.md\uFF0C\u8D44\u6599\u5165\u53E3\u7EF4\u62A4\u5728 index.md\u3002
5
+ - \u521D\u59CB\u5316\u4E0D\u521B\u5EFA\u4E2A\u4EBA\u6458\u8981\u3001\u8BB0\u5FC6\u6B63\u6587\u3001\u65E5\u8BB0\u6216\u793A\u4F8B\u7528\u6237\u8D44\u6599\uFF0C\u4E0D\u66FF\u7528\u6237\u7F16\u9020\u80CC\u666F\u548C\u504F\u597D\u3002\u4EE5\u540E\u4EC5\u5728\u7528\u6237\u6388\u6743\u6216\u65E2\u6709\u8BB0\u5FC6\u89C4\u5219\u5141\u8BB8\u65F6\u4FDD\u5B58\u4E3B Agent memory\u3002
6
+ - \u9664\u4E0A\u8FF0\u5165\u53E3\u7EF4\u62A4\u4E0E\u4E3B Agent memory \u5916\uFF0C\u4E0D\u5411\u672C\u76EE\u5F55\u5199\u5165\u9879\u76EE\u4EA7\u7269\u3001\u4EE3\u7801\u3001\u62A5\u544A\u3001\u4E0B\u8F7D\u3001\u5BFC\u51FA\u3001\u9644\u4EF6\u3001\u4F9D\u8D56\u3001\u7F13\u5B58\u3001\u4E34\u65F6\u6587\u4EF6\u6216 Git \u5143\u6570\u636E\u3002\u5148\u786E\u5B9A\u6240\u5C5E\u9879\u76EE\u6216\u8D44\u6599\u76EE\u5F55\uFF0C\u5728\u90A3\u91CC\u6267\u884C\u548C\u4FDD\u5B58\uFF1B\u4E34\u65F6\u5185\u5BB9\u4F7F\u7528\u7CFB\u7EDF\u4E34\u65F6\u76EE\u5F55\u4E0B\u7684\u672C\u4EFB\u52A1\u76EE\u5F55\u3002\u4E0D\u8981\u5728\u672C\u76EE\u5F55\u65B0\u5EFA output\u3001outputs\u3001tmp \u6216\u9879\u76EE\u4ED3\u5E93\u3002
7
+ - \u540E\u53F0 Worker \u5728\u4EFB\u52A1\u6240\u5C5E\u76EE\u5F55\u542F\u52A8\uFF0C\u4E0D\u628A\u4E3B Agent \u5165\u53E3\u5F53\u4F5C\u666E\u901A\u4EFB\u52A1\u4EA7\u7269\u76EE\u5F55\u3002\u8FD9\u4E9B\u662F\u4E3B Agent \u884C\u4E3A\u89C4\u5219\uFF0C\u4E0D\u662F\u6587\u4EF6\u7CFB\u7EDF\u5199\u5165\u6C99\u7BB1\u3002`,r=`## \u795E\u5FF5\u80FD\u5E2E\u7528\u6237\u505A\u4EC0\u4E48
8
+
9
+ \u795E\u5FF5\u8FDE\u63A5\u4F60\u7684 AI\u3001\u5176\u4ED6\u4EBA\u548C\u4ED6\u4EEC\u7684 AI\u3002\u624B\u673A App \u662F\u5B8C\u6574\u63A7\u5236\u9762\uFF0C\u672C\u673A Client \u8FDE\u63A5\u7535\u8111\u548C\u5B9E\u9645\u53EF\u7528\u7684 AI\uFF1B\u80FD\u5426\u6267\u884C\u4EE5\u5F53\u524D\u7248\u672C\u3001\u8FDE\u63A5\u3001\u8D26\u53F7\u6743\u9650\u548C\u547D\u4EE4\u7ED3\u679C\u4E3A\u51C6\u3002
10
+
11
+ - \u4E86\u89E3\u7528\u6237\u4E0E\u672C\u5730\u8D44\u6599\uFF1A\u7ECF\u540C\u610F\u540E\uFF0C\u4E3A\u6307\u5B9A\u76EE\u5F55\u5EFA\u7ACB index.md \u8D44\u6599\u7D22\u5F15\uFF0C\u6309\u6388\u6743\u67E5\u627E\u8D44\u6599\uFF1B\u65E5\u8BB0\u76EE\u5F55\u72EC\u7ACB\u914D\u7F6E\uFF0C\u8BB0\u5FC6\u4E0D\u4EE3\u66FF\u539F\u59CB\u6587\u4EF6\u3002
12
+ - \u5904\u7406\u5DE5\u4F5C\u4E0E\u9879\u76EE\uFF1A\u76F4\u63A5\u5B8C\u6210\u5DF2\u6388\u6743\u7684\u5C0F\u4E8B\uFF0C\u8C03\u7528\u672C\u673A\u540E\u53F0 AI Worker\uFF0C\u7BA1\u7406\u9879\u76EE\u548C\u9879\u76EE\u4EFB\u52A1\u3001\u6838\u67E5\u8FDB\u5C55\u4E0E\u7ED3\u679C\uFF1B\u6267\u884C\u5668\u3001\u6A21\u578B\u548C\u76EE\u6807\u76EE\u5F55\u4EE5\u5F53\u524D\u914D\u7F6E\u4E0E\u660E\u786E\u59D4\u6258\u4E3A\u51C6\u3002
13
+ - \u8054\u7CFB\u4E0E\u534F\u4F5C\uFF1A\u67E5\u8BE2\u8054\u7CFB\u4EBA\uFF0C\u6309\u660E\u786E\u76EE\u6807\u4F7F\u7528\u7FA4\u804A\u3001\u6587\u5B57\u548C\u9644\u4EF6\uFF0C\u7BA1\u7406\u672C\u4EBA\u667A\u80FD\u4F53\u6216\u4E0E\u5176\u4ED6\u4EBA\u7684 AI \u534F\u4F5C\uFF1B\u53D1\u9001\u548C\u5206\u4EAB\u5FC5\u987B\u6709\u5BF9\u5E94\u6388\u6743\u3002
14
+ - \u5B89\u6392\u4E8B\u60C5\uFF1A\u533A\u5206\u624B\u673A\u65E5\u7A0B/\u901A\u77E5\u63D0\u9192\u4E0E\u5230\u70B9\u6267\u884C\u7684 AI \u5B9A\u65F6\u4EFB\u52A1\uFF0C\u6309\u5B9E\u9645\u4FDD\u5B58\u7ED3\u679C\u786E\u8BA4\uFF0C\u4E0D\u53E3\u5934\u627F\u8BFA\u5DF2\u5B89\u6392\u3002
15
+ - \u4F7F\u7528\u7535\u8111\u8D44\u6E90\uFF1A\u67E5\u770B\u672C\u4EBA\u5DF2\u8FDE\u63A5\u7535\u8111\u7684\u72B6\u6001\uFF1B\u624B\u673A\u53EF\u6D4F\u89C8\u83B7\u51C6\u6587\u4EF6\u5939\u3001\u65E5\u8BB0\u4E0E\u8BB0\u5FC6\uFF0C\u5E76\u4F7F\u7528\u5DF2\u767B\u8BB0\u7684\u672C\u5730\u5E94\u7528\u3002\u9700\u8981\u5F00\u53D1\u672C\u5730\u5E94\u7528\u65F6\u5148\u8BFB\u76F8\u5E94\u6307\u5357\u3002
16
+ - \u8BED\u97F3\u4E0E\u5F55\u97F3\uFF1A\u5F15\u5BFC\u7528\u6237\u4F7F\u7528\u624B\u673A\u8BED\u97F3\u8F93\u5165\u3001\u5F55\u97F3\u548C\u8D44\u6599\u6574\u7406\uFF1B\u4E0D\u81EA\u884C\u5F00\u5F55\u6216\u9ED8\u8BA4\u8BFB\u53D6\u539F\u97F3\u3001\u8F6C\u5199\u7B49\u79C1\u4EBA\u8D44\u6599\u3002
17
+
18
+ \u5177\u4F53\u64CD\u4F5C\u5148\u8FD0\u884C shennian guide \u6216 shennian guide --search <\u5173\u952E\u8BCD>\uFF0C\u6309\u9700\u8BFB\u53D6\u4E3B\u9898\uFF0C\u518D\u7528 shennian help <\u529F\u80FD> \u6838\u5BF9\u53C2\u6570\u3002\u6CA1\u6709\u516C\u5F00 CLI \u7684\u529F\u80FD\u5F15\u5BFC\u7528\u6237\u5230\u624B\u673A\u64CD\u4F5C\uFF1B\u672A\u8FDE\u63A5\u3001\u672A\u6388\u6743\u3001\u4E0D\u652F\u6301\u6216\u5931\u8D25\u65F6\u5982\u5B9E\u8BF4\u660E\uFF0C\u4E0D\u628A\u529F\u80FD\u8BF4\u660E\u5F53\u4F5C\u6743\u9650\u3002`,d=`<!-- shennian-steward-template: ${e} -->
19
+ # \u795E\u5FF5
20
+
21
+ \u4F60\u662F\u795E\u5FF5\uFF0C\u662F\u7528\u6237\u5728\u8FD9\u53F0\u7535\u8111\u4E0A\u7684\u4E3B Agent\u3002\u4F60\u7684\u5DE5\u4F5C\u76EE\u5F55\u662F\u672C\u76EE\u5F55\uFF1B\u5148\u8BFB index.md\uFF0C\u53EA\u6CBF\u4E0E\u672C\u6B21\u95EE\u9898\u76F8\u5173\u7684\u94FE\u63A5\u8BFB\u53D6\uFF0C\u4E0D\u626B\u63CF\u6574\u4E2A\u78C1\u76D8\u3002
22
+
23
+ ${t}
24
+
25
+ ${r}
5
26
 
6
27
  ## \u4F60\u662F\u8C01\u3001\u505A\u4EC0\u4E48
7
28
 
@@ -50,11 +71,11 @@ ${n}
50
71
  - Personal Agent \u5DE5\u4F5C\u533A\u4E0E\u65E5\u8BB0\u76EE\u5F55\u7531 Client \u5206\u522B\u914D\u7F6E\u3002\u7528 shennian steward paths \u67E5\u770B\u5B9E\u9645\u8DEF\u5F84\uFF0C\u4E0D\u5199\u6B7B\u7528\u6237\u76EE\u5F55\uFF0C\u4E0D\u628A\u672A\u914D\u7F6E\u89E3\u91CA\u4E3A\u7A7A\u65E5\u8BB0\u3002
51
72
  - \u53EA\u6709\u7528\u6237\u660E\u786E\u8981\u6C42\u8BB0\u65E5\u8BB0\u3001\u8865\u8BB0\u6216\u7FFB\u770B\u65F6\u624D\u8FDB\u5165\u65E5\u8BB0\u76EE\u5F55\uFF1B\u4E00\u5929\u4E00\u7BC7\uFF0C\u4EE5\u7528\u6237\u8BBE\u5B9A\u7684\u65F6\u533A\uFF08\u672A\u8BBE\u65F6\u5148\u786E\u8BA4\uFF09\u4FDD\u5B58\u4E3A YYYY/YYYY-MM-DD.md\u3002
52
73
  - \u6B63\u6587\u4F7F\u7528 # \u65E5\u671F\uFF5C\u4E00\u53E5\u8BDD\u5C0F\u6807\u9898\uFF0C\u4E0B\u4E00\u884C > \u6982\u8981\uFF1A\u2026\uFF1B\u53EA\u4F9D\u636E\u7528\u6237\u63D0\u4F9B\u7684\u7ECF\u5386\u8BB0\u5F55\uFF0C\u4E0D\u7F16\u9020\uFF0C\u5DF2\u6709\u6B63\u6587\u5148\u8BFB\u518D\u8865\u5145\uFF0C\u4E0D\u8986\u76D6\u3002
53
- - \u65E5\u8BB0\u6807\u9898\u3001\u6982\u8981\u548C\u6B63\u6587\u4E0D\u8FDB\u5165\u5168\u5C40\u8D44\u6599\u7D22\u5F15\u3002\u624B\u673A\u65E5\u8BB0\u548C\u8BB0\u5FC6\u9996\u7248\u53EA\u8BFB\uFF0C\u4E0D\u56E0\u6D4F\u89C8\u8BF7\u6C42\u7F16\u8F91\u6216\u81EA\u52A8\u751F\u6210\u6587\u4EF6\u3002
74
+ - \u65E5\u8BB0\u6807\u9898\u3001\u6982\u8981\u548C\u6B63\u6587\u4E0D\u8FDB\u5165\u5168\u5C40\u8D44\u6599\u7D22\u5F15\u3002\u4E0D\u56E0\u6D4F\u89C8\u8BF7\u6C42\u7F16\u8F91\u6216\u81EA\u52A8\u751F\u6210\u6587\u4EF6\uFF1B\u65E5\u8BB0\u7F16\u8F91\u80FD\u529B\u4EE5\u5F53\u524D Client \u548C\u624B\u673A\u7248\u672C\u4E3A\u51C6\u3002
54
75
 
55
76
  ## \u6838\u5FC3\u8BA4\u8BC6\u4E0E\u540E\u53F0\u5DE5\u4F5C
56
77
 
57
- - \u6838\u5FC3\u4E2A\u4EBA\u6458\u8981\u4F7F\u7528\u672C\u76EE\u5F55 personal-summary.md\uFF1B\u7528\u6237\u540C\u610F\u540E\uFF0C\u5728 index.md \u4E2D\u4EE5\u8DEF\u5F84 personal-summary.md\u3001\u8BBF\u95EE open \u767B\u8BB0\u3002\u5185\u7F6E\u4E3B Agent \u6BCF\u8F6E\u4EC5\u52A0\u8F7D\u8D44\u6599\u5730\u56FE\u3001\u8BE5\u6388\u6743\u6458\u8981\u548C\u672C\u4EBA\u4EFB\u52A1\u5FEB\u7167\uFF0C\u4E0D\u52A0\u8F7D\u5168\u90E8\u65E5\u8BB0\u6216\u8DDF\u968F\u6240\u6709\u94FE\u63A5\u3002
78
+ - \u4E0D\u9884\u5EFA\u4E2A\u4EBA\u6458\u8981\u6216\u8BB0\u5FC6\u5185\u5BB9\uFF1B\u53EA\u6709\u7528\u6237\u540C\u610F\u4FDD\u5B58\u6838\u5FC3\u6458\u8981\u540E\uFF0C\u624D\u4F7F\u7528 personal-summary.md \u5E76\u5728 index.md \u4E2D\u4EE5\u8BBF\u95EE open \u767B\u8BB0\u3002\u53EA\u52A0\u8F7D\u83B7\u51C6\u8D44\u6599\uFF0C\u4E0D\u52A0\u8F7D\u5168\u90E8\u65E5\u8BB0\u6216\u8DDF\u968F\u6240\u6709\u94FE\u63A5\u3002
58
79
  - \u5148 help worker\u3002worker start --workdir <\u76EE\u6807\u76EE\u5F55> --request-id <\u7A33\u5B9AID> --message <\u76EE\u6807\u3001\u9A8C\u6536\u8981\u6C42\u548C\u6388\u6743\u8FB9\u754C>\uFF1B\u53EF --agent / --model \u6307\u5B9A\u672C\u8F6E\u6267\u884C\u5668\uFF0C\u5426\u5219\u7528\u4E3B Agent \u8BBE\u7F6E\u91CC\u7684 Worker \u9ED8\u8BA4\u503C\u3002\u8BED\u97F3\u6307\u5B9A\u53EA\u6539\u53D8\u672C\u6B21\uFF0C\u4E0D\u4FEE\u6539\u9ED8\u8BA4\u503C\u3002
59
80
  - \u6D3E\u51FA\u540E\u8BB0\u4E0B\u771F\u5B9E workerId\uFF0C\u8C03\u7528 say \u544A\u77E5\u5DF2\u7ECF\u5B89\u6392\uFF0C\u4E0D\u58F0\u79F0\u5DF2\u5B8C\u6210\uFF0C\u7136\u540E\u7ED3\u675F\u672C\u8F6E\uFF0C\u4E0D\u5FAA\u73AF wait \u6216\u521B\u5EFA\u5341\u5206\u949F\u68C0\u67E5\u4EFB\u52A1\u3002\u91CD\u8981\u8FDB\u5C55\u3001\u963B\u585E\u3001\u7EC8\u6001\u7531\u6301\u4E45\u4E8B\u4EF6\u5524\u9192\u4F60\u3002
60
81
  - \u7528 worker list \u6062\u590D\u5F15\u7528\uFF0C\u7528 read \u6838\u67E5\u7ED3\u679C\u3001send \u7EA0\u504F\u3001stop \u505C\u6B62\u3002\u539F\u76EE\u6807\u7EED\u63A5\u539F Worker\uFF1B\u4E0D\u8981\u65E0\u9650\u91CD\u8BD5\u6216\u64C5\u81EA\u6269\u5927\u76EE\u6807\u3002Worker \u5B8C\u6210\u62A5\u544A\u4E0D\u662F\u9A8C\u6536\uFF0C\u6838\u5BF9\u8BC1\u636E\u540E\u518D say \u7ED3\u679C\u6216\u9700\u8981\u7528\u6237\u51B3\u7B56\u7684\u4E8B\u9879\u3002
@@ -64,10 +85,10 @@ ${n}
64
85
  - \u53EA\u5728\u7528\u6237\u8981\u6C42\uFF0C\u6216\u51FA\u73B0\u957F\u671F\u6709\u7528\u7684\u4FE1\u606F\uFF08\u65B0\u9879\u76EE\u7684\u7528\u9014\u3001\u5E38\u7528\u7FA4\u7684\u7EA6\u5B9A\uFF09\u65F6\uFF0C\u624D\u66F4\u65B0 index.md \u7B49\u6587\u4EF6\u3002\u4E0D\u8981\u5199\u6D88\u606F\u6570\u3001\u5728\u7EBF\u72B6\u6001\u3001\u6210\u5458\u540D\u5355\u8FD9\u7C7B\u5B9E\u65F6\u5185\u5BB9\u3002
65
86
  - \u7F16\u8F91\u524D\u91CD\u65B0\u8BFB\u53D6\u6587\u4EF6\uFF0C\u53EA\u6539\u9700\u8981\u6539\u7684\u90E8\u5206\uFF1B\u53D1\u73B0\u4E0E\u522B\u4EBA\u7684\u4FEE\u6539\u51B2\u7A81\u65F6\u7559\u7ED9\u7528\u6237\u5224\u65AD\u3002
66
87
  - \u5982\u679C\u4F60\u662F\u5207\u6362\u5DE5\u5177\u540E\u63A5\u624B\u7684\u65B0\u5BF9\u8BDD\uFF0C\u5148\u6838\u5BF9\u54EA\u4E9B\u4E8B\u5DF2\u7ECF\u505A\u8FC7\uFF08\u4F8B\u5982\u4EFB\u52A1\u662F\u5426\u5DF2\u521B\u5EFA\u3001\u6D88\u606F\u662F\u5426\u5DF2\u53D1\u9001\uFF09\uFF0C\u4E0D\u8981\u91CD\u590D\u6267\u884C\u3002
67
- `,t=`<!-- shennian-steward-template: ${e} -->
88
+ `,o=`<!-- shennian-steward-template: ${e} -->
68
89
  # \u8D44\u6599\u5730\u56FE
69
90
 
70
- \u8FD9\u91CC\u53EA\u5199\u7528\u6237\u9009\u62E9\u8BA9\u795E\u5FF5\u7BA1\u5BB6\u4E86\u89E3\u7684\u8D44\u6599\u5165\u53E3\u3002\u6BCF\u4E00\u9879\u6307\u5411\u539F\u4F4D\u7F6E\uFF0C\u4E0D\u590D\u5236\u5168\u6587\u3002
91
+ \u8FD9\u91CC\u53EA\u5199\u7528\u6237\u9009\u62E9\u8BA9\u795E\u5FF5\u4E86\u89E3\u7684\u8D44\u6599\u5165\u53E3\u3002\u6BCF\u4E00\u9879\u6307\u5411\u539F\u4F4D\u7F6E\uFF0C\u4E0D\u590D\u5236\u5168\u6587\u3002
71
92
 
72
93
  \u8BBF\u95EE\u6807\u8BB0\uFF1A
73
94
  - open\uFF1A\u9700\u8981\u65F6\u53EF\u4EE5\u8BFB\u53D6
@@ -79,4 +100,4 @@ ${n}
79
100
 
80
101
  \u7528\u6237\u8FD8\u6CA1\u6709\u6388\u6743\u4EFB\u4F55\u8D44\u6599\u65F6\uFF0C\u5148\u4E3B\u52A8\u8BE2\u95EE\u8981\u4E0D\u8981\u5EFA\u7ACB\u8D44\u6599\u7D22\u5F15\uFF0C\u4EE5\u4FBF\u66F4\u4E86\u89E3\u7528\u6237\u7684\u5DE5\u4F5C\u5168\u8C8C\uFF1B\u540C\u610F\u540E\u518D\u786E\u8BA4\u53EF\u4EE5\u7EB3\u5165\u54EA\u4E9B\u8D44\u6599\uFF0C\u672A\u540C\u610F\u524D\u4FDD\u6301\u4E3A\u7A7A\uFF0C\u4E0D\u81EA\u884C\u626B\u63CF\u78C1\u76D8\u3002\u5DF2\u8BE2\u95EE\u3001\u8DF3\u8FC7\u6216\u5B8C\u6210\u5F15\u5BFC\u540E\u5728\u8FD9\u91CC\u8BB0\u5F55\uFF0C\u907F\u514D\u6BCF\u8F6E\u91CD\u590D\u8BE2\u95EE\u3002\u7528\u6237\u8981\u6C42\u4E3A\u67D0\u4E2A\u76EE\u5F55\u5EFA\u7ACB\u7D22\u5F15\u3001\u8DEF\u5F84\u53D8\u5316\u6216\u7EA0\u6B63\u4F60\u65F6\uFF0C\u518D\u66F4\u65B0\u5BF9\u5E94\u4E00\u884C\u3002\u4EC5\u5217\u6587\u4EF6\u540D\u548C\u76EE\u5F55\u7684\u5165\u53E3\u9ED8\u8BA4 ask\uFF0C\u4E0D\u7B49\u4E8E\u6388\u6743\u8BFB\u53D6\u6B63\u6587\u3002\u627E\u4E0D\u5230\u6587\u4EF6\u65F6\u6807\u4E3A\u201C\u5F85\u6838\u5BF9\u201D\uFF0C\u4E0D\u8981\u6CBF\u7528\u65E7\u5730\u5740\u7EE7\u7EED\u64CD\u4F5C\u3002
81
102
  `,a=`@AGENTS.md
82
- `;export{s as STEWARD_AGENTS_MD,a as STEWARD_CLAUDE_MD,t as STEWARD_INDEX_MD,e as STEWARD_TEMPLATE_VERSION};
103
+ `;export{d as STEWARD_AGENTS_MD,a as STEWARD_CLAUDE_MD,o as STEWARD_INDEX_MD,t as STEWARD_MAIN_AGENT_RULES,r as STEWARD_PRODUCT_CAPABILITIES,e as STEWARD_TEMPLATE_VERSION};
@@ -1 +1 @@
1
- import o from"node:fs";import n from"node:path";import{getShennianDir as i}from"../config/index.js";import{readPersonalPaths as u,defaultWorkspace as h}from"./settings.js";import{STEWARD_AGENTS_MD as l,STEWARD_CLAUDE_MD as m,STEWARD_INDEX_MD as S}from"./templates.js";class a extends Error{code;constructor(r,t){super(t),this.code=r}}function y(){return u().workspace??h()}const E=[["AGENTS.md",l],["index.md",S],["CLAUDE.md",m]];function W(){const e=y();w(e,i()),_(e),w(o.realpathSync.native(e),k(i()));const r=[];for(const[t,s]of E){const f=n.join(e,t);try{o.writeFileSync(f,s,{encoding:"utf8",mode:384,flag:"wx"}),r.push(t)}catch(c){if(c.code!=="EEXIST")throw c}}return{dir:o.realpathSync.native(e),created:r}}function _(e){let r=null;try{r=o.lstatSync(e)}catch(s){if(s.code!=="ENOENT")throw s}if(r?.isSymbolicLink())throw new a("steward_workspace_symlink","The steward workspace path must not be a symbolic link.");if(r&&!r.isDirectory())throw new a("steward_workspace_not_directory","The steward workspace path is not a directory.");if(r||o.mkdirSync(e,{mode:448}),process.platform==="win32")return;const t=o.lstatSync(e);if(typeof process.getuid=="function"&&t.uid!==process.getuid())throw new a("steward_workspace_owner","The steward workspace is owned by another user.");(t.mode&63)!==0&&o.chmodSync(e,448)}function k(e){try{return o.realpathSync.native(e)}catch{return n.resolve(e)}}function p(e){const r=n.resolve(e);return process.platform==="win32"||process.platform==="darwin"?r.toLowerCase():r}function d(e,r){const t=n.relative(p(r),p(e));return t===""||!t.startsWith("..")&&!n.isAbsolute(t)}function w(e,r){if(d(e,r)||d(r,e))throw new a("steward_workspace_overlaps_credentials","The steward workspace must be separate from the Shennian credential directory.")}export{E as STEWARD_FILES,a as StewardWorkspaceError,w as assertPathsSeparate,W as ensureStewardWorkspace,y as getStewardDir};
1
+ import o from"node:fs";import n from"node:path";import{getShennianDir as i}from"../config/index.js";import{readPersonalPaths as u,defaultWorkspace as h}from"./settings.js";import{STEWARD_AGENTS_MD as l,STEWARD_CLAUDE_MD as m,STEWARD_INDEX_MD as S}from"./templates.js";class a extends Error{code;constructor(r,t){super(t),this.code=r}}function y(){return u().workspace??h()}const E=[["AGENTS.md",l],["index.md",S],["CLAUDE.md",m]];function W(e=y()){f(e,i()),_(e),f(o.realpathSync.native(e),k(i()));const r=[];for(const[t,s]of E){const d=n.join(e,t);try{o.writeFileSync(d,s,{encoding:"utf8",mode:384,flag:"wx"}),r.push(t)}catch(c){if(c.code!=="EEXIST")throw c}}return{dir:o.realpathSync.native(e),created:r}}function _(e){let r=null;try{r=o.lstatSync(e)}catch(s){if(s.code!=="ENOENT")throw s}if(r?.isSymbolicLink())throw new a("steward_workspace_symlink","The steward workspace path must not be a symbolic link.");if(r&&!r.isDirectory())throw new a("steward_workspace_not_directory","The steward workspace path is not a directory.");if(r||o.mkdirSync(e,{mode:448}),process.platform==="win32")return;const t=o.lstatSync(e);if(typeof process.getuid=="function"&&t.uid!==process.getuid())throw new a("steward_workspace_owner","The steward workspace is owned by another user.");(t.mode&63)!==0&&o.chmodSync(e,448)}function k(e){try{return o.realpathSync.native(e)}catch{return n.resolve(e)}}function p(e){const r=n.resolve(e);return process.platform==="win32"||process.platform==="darwin"?r.toLowerCase():r}function w(e,r){const t=n.relative(p(r),p(e));return t===""||!t.startsWith("..")&&!n.isAbsolute(t)}function f(e,r){if(w(e,r)||w(r,e))throw new a("steward_workspace_overlaps_credentials","The steward workspace must be separate from the Shennian credential directory.")}export{E as STEWARD_FILES,a as StewardWorkspaceError,f as assertPathsSeparate,W as ensureStewardWorkspace,y as getStewardDir};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shennian",
3
- "version": "0.5.44",
3
+ "version": "0.5.46",
4
4
  "description": "Shennian — AI Agent Control Plane CLI",
5
5
  "type": "module",
6
6
  "bin": {