shennian 0.3.17 → 0.3.18

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.
@@ -446,8 +446,8 @@
446
446
  },
447
447
  {
448
448
  "file": "src/room/invite-bootstrap.js",
449
- "beforeBytes": 4627,
450
- "afterBytes": 2539
449
+ "beforeBytes": 6136,
450
+ "afterBytes": 3363
451
451
  },
452
452
  {
453
453
  "file": "src/room/invocation-token-ipc.js",
@@ -13,6 +13,20 @@ export type TrustedRoomAgentBootstrap = {
13
13
  'room.status'
14
14
  ];
15
15
  supportedRuntimes: readonly ['codex', 'claude_code', 'workbuddy'];
16
+ integrationCommands: {
17
+ codex: {
18
+ install: string;
19
+ update: string;
20
+ };
21
+ claude_code: {
22
+ install: string;
23
+ update: string;
24
+ };
25
+ workbuddy: {
26
+ install: string;
27
+ update: string;
28
+ };
29
+ };
16
30
  };
17
31
  export type RoomClientPreparation = {
18
32
  status: 'ready';
@@ -1 +1 @@
1
- const c="https://shennian.net/api/room-invites/agent-bootstrap",a=["room.create","room.join","room.read","room.send","room.mode","room.status"],s=["codex","claude_code","workbuddy"];class r extends Error{code;constructor(n,t){super(t),this.code=n,this.name="RoomInviteBootstrapError"}}async function h(o=fetch){let n;try{n=await o(c,{headers:{accept:"application/json"},redirect:"error",signal:AbortSignal.timeout(1e4)})}catch{throw new r("room_bootstrap_unavailable","Official Shennian Room setup information is unavailable.")}if(!n.ok)throw new r("room_bootstrap_unavailable","Official Shennian Room setup information is unavailable.");let t;try{t=await n.json()}catch{throw i()}return d(t)}function d(o){if(!o||typeof o!="object"||Array.isArray(o))throw i();const n=o,t=m(n.install),e=m(n.roomTool);if(n.schemaVersion!==1||n.product!=="shennian"||n.inviteKind!=="room"||t.documentationUrl!=="https://shennian.net/agent-install.md"||t.npmPackage!=="shennian"||t.distTag!=="latest"||t.installCommand!=="npm install -g shennian@latest"||t.upgradeCommand!=="shennian upgrade"||typeof t.minimumCliVersion!="string"||!/^\d+\.\d+\.\d+$/.test(t.minimumCliVersion)||e.schemaVersion!==1||!l(e.actions,a)||!l(e.supportedRuntimes,s))throw i();return{documentationUrl:"https://shennian.net/agent-install.md",installCommand:"npm install -g shennian@latest",upgradeCommand:"shennian upgrade",minimumCliVersion:t.minimumCliVersion,actions:a,supportedRuntimes:s}}function f(o,n){if(o===null)return{status:"install_required",documentationUrl:n.documentationUrl,command:n.installCommand};const t=u(o),e=u(n.minimumCliVersion);if(!t||!e)throw new r("invalid_local_cli_version","The installed Shennian CLI version could not be verified.");return p(t,e)<0?{status:"upgrade_required",documentationUrl:n.documentationUrl,command:n.upgradeCommand}:{status:"ready"}}function m(o){if(!o||typeof o!="object"||Array.isArray(o))throw i();return o}function l(o,n){return Array.isArray(o)&&o.length===n.length&&o.every((t,e)=>t===n[e])}function u(o){const n=/^(\d+)\.(\d+)\.(\d+)(?:-[0-9A-Za-z.-]+)?$/.exec(o.trim());if(!n)return null;const t=[Number(n[1]),Number(n[2]),Number(n[3])];return t.every(Number.isSafeInteger)?t:null}function p(o,n){for(let t=0;t<3;t+=1)if(o[t]!==n[t])return o[t]-n[t];return 0}function i(){return new r("invalid_room_bootstrap","Official Shennian Room setup information failed validation.")}export{r as RoomInviteBootstrapError,h as fetchTrustedRoomAgentBootstrap,f as resolveRoomClientPreparation,d as validateTrustedRoomAgentBootstrap};
1
+ const p="https://shennian.net/api/room-invites/agent-bootstrap",d=["room.create","room.join","room.read","room.send","room.mode","room.status"],r=["codex","claude_code","workbuddy"],m={codex:{install:"shennian integration codex install --confirm-user-action",update:"shennian integration codex update --confirm-user-action"},claude_code:{install:"shennian integration claude-code install --confirm-user-action",update:"shennian integration claude-code update --confirm-user-action"},workbuddy:{install:"shennian integration workbuddy install --confirm-user-action",update:"shennian integration workbuddy update --confirm-user-action"}};class a extends Error{code;constructor(t,n){super(n),this.code=t,this.name="RoomInviteBootstrapError"}}async function y(o=fetch){let t;try{t=await o(p,{headers:{accept:"application/json"},redirect:"error",signal:AbortSignal.timeout(1e4)})}catch{throw new a("room_bootstrap_unavailable","Official Shennian Room setup information is unavailable.")}if(!t.ok)throw new a("room_bootstrap_unavailable","Official Shennian Room setup information is unavailable.");let n;try{n=await t.json()}catch{throw s()}return f(n)}function f(o){if(!o||typeof o!="object"||Array.isArray(o))throw s();const t=o,n=c(t.install),e=c(t.roomTool),i=e.integrationCommands===void 0?m:c(e.integrationCommands);if(t.schemaVersion!==1||t.product!=="shennian"||t.inviteKind!=="room"||n.documentationUrl!=="https://shennian.net/agent-install.md"||n.npmPackage!=="shennian"||n.distTag!=="latest"||n.installCommand!=="npm install -g shennian@latest"||n.upgradeCommand!=="shennian upgrade"||typeof n.minimumCliVersion!="string"||!/^\d+\.\d+\.\d+$/.test(n.minimumCliVersion)||e.schemaVersion!==1||!l(e.actions,d)||!l(e.supportedRuntimes,r)||!h(i))throw s();return{documentationUrl:"https://shennian.net/agent-install.md",installCommand:"npm install -g shennian@latest",upgradeCommand:"shennian upgrade",minimumCliVersion:n.minimumCliVersion,actions:d,supportedRuntimes:r,integrationCommands:m}}function h(o){return Object.keys(o).sort().join(",")!==[...r].sort().join(",")?!1:r.every(t=>{const n=o[t];if(!n||typeof n!="object"||Array.isArray(n))return!1;const e=n,i=m[t];return Object.keys(e).sort().join(",")==="install,update"&&e.install===i.install&&e.update===i.update})}function C(o,t){if(o===null)return{status:"install_required",documentationUrl:t.documentationUrl,command:t.installCommand};const n=u(o),e=u(t.minimumCliVersion);if(!n||!e)throw new a("invalid_local_cli_version","The installed Shennian CLI version could not be verified.");return g(n,e)<0?{status:"upgrade_required",documentationUrl:t.documentationUrl,command:t.upgradeCommand}:{status:"ready"}}function c(o){if(!o||typeof o!="object"||Array.isArray(o))throw s();return o}function l(o,t){return Array.isArray(o)&&o.length===t.length&&o.every((n,e)=>n===t[e])}function u(o){const t=/^(\d+)\.(\d+)\.(\d+)(?:-[0-9A-Za-z.-]+)?$/.exec(o.trim());if(!t)return null;const n=[Number(t[1]),Number(t[2]),Number(t[3])];return n.every(Number.isSafeInteger)?n:null}function g(o,t){for(let n=0;n<3;n+=1)if(o[n]!==t[n])return o[n]-t[n];return 0}function s(){return new a("invalid_room_bootstrap","Official Shennian Room setup information failed validation.")}export{a as RoomInviteBootstrapError,y as fetchTrustedRoomAgentBootstrap,C as resolveRoomClientPreparation,f as validateTrustedRoomAgentBootstrap};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shennian",
3
- "version": "0.3.17",
3
+ "version": "0.3.18",
4
4
  "description": "Shennian — AI Agent Control Plane CLI",
5
5
  "type": "module",
6
6
  "bin": {