@flowy-agent-store/protocol 0.1.0-beta.4 → 0.1.0-beta.6

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/dist/index.cjs CHANGED
@@ -29,9 +29,36 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
29
29
  * party can run an installed MCP tool while the connection and its credentials
30
30
  * stay on the host. **`fp-1` changes the shape only** (date stamp → counter): a
31
31
  * `2026-…` value invites being read as a release date, and no wire behaviour
32
- * changed with the rename.
32
+ * changed with the rename. **`fp-2` carries the tools' parameters**
33
+ * (`ConnectorTool.input_schema`, plus `tools_truncated` on `ConnectorDetail`
34
+ * and `ConnectorProbeResult`): a caller that must *name* a tool to be granted it
35
+ * should be able to read what that tool takes. It is the counterpart of the
36
+ * host's `[connector_proxy]` grant moving from one tool at a time to the
37
+ * connector (doc `26`). **`fp-3` makes a Skill selectable per turn**:
38
+ * `conversation/send` gains an optional `mentions` list whose only honoured kind
39
+ * is `skill`, so one turn can mount a Skill's instructions without rewriting the
40
+ * conversation's create-time snapshot (doc `27` 阶段 1). **`fp-4` lets a
41
+ * conversation be created as an installed expert**: `conversation/create` gains
42
+ * an optional `agent_id`, whose Definition supplies the chat's preset identity
43
+ * plus its own Skill and Connector fences — frozen at creation, since none of
44
+ * those keys is mutable afterwards (doc `27` 阶段 2a). **`fp-5` opens a Team's
45
+ * Leader the same way**: an optional `team_id` runs the `team/run` orchestration
46
+ * (members, template, fences) but stops before the goal turn, so the client
47
+ * speaks first; `agent_id` and `team_id` are mutually exclusive (阶段 2b).
48
+ * **`fp-6` makes the model and the reasoning level selectable per call**:
49
+ * `conversation/send` and `agent/run` each gain an optional `model` and
50
+ * `reasoning_effort`. The scope is deliberately the **conversation** (send) and
51
+ * the **run** (agent/run), not "just this turn": the Nomi runtime is built from
52
+ * the persisted row, so a send-carried value is a sticky switch that takes
53
+ * effect on that very turn (doc `29` §4). `ConversationView` also gains
54
+ * `reasoning_effort`, because a setting that can be written by three methods but
55
+ * read back by none is not a setting a client can honour (doc `29` §5.5).
56
+ * **`fp-7` adds the `zip` marketplace source kind**: `market/add` accepts
57
+ * `source_kind: "zip"`, one archive whose root *is* the market root. The
58
+ * official bundles move to it because the old `url` form made a first fetch
59
+ * mirror 14,714 files (611 MiB) for `experts` alone (doc `30`).
33
60
  */
34
- const APP_SERVER_PROTOCOL_VERSION = "fp-1";
61
+ const APP_SERVER_PROTOCOL_VERSION = "fp-7";
35
62
  //#endregion
36
63
  //#region src/errors.ts
37
64
  var AppServerError = class extends Error {
package/dist/index.d.cts CHANGED
@@ -28,9 +28,36 @@
28
28
  * party can run an installed MCP tool while the connection and its credentials
29
29
  * stay on the host. **`fp-1` changes the shape only** (date stamp → counter): a
30
30
  * `2026-…` value invites being read as a release date, and no wire behaviour
31
- * changed with the rename.
31
+ * changed with the rename. **`fp-2` carries the tools' parameters**
32
+ * (`ConnectorTool.input_schema`, plus `tools_truncated` on `ConnectorDetail`
33
+ * and `ConnectorProbeResult`): a caller that must *name* a tool to be granted it
34
+ * should be able to read what that tool takes. It is the counterpart of the
35
+ * host's `[connector_proxy]` grant moving from one tool at a time to the
36
+ * connector (doc `26`). **`fp-3` makes a Skill selectable per turn**:
37
+ * `conversation/send` gains an optional `mentions` list whose only honoured kind
38
+ * is `skill`, so one turn can mount a Skill's instructions without rewriting the
39
+ * conversation's create-time snapshot (doc `27` 阶段 1). **`fp-4` lets a
40
+ * conversation be created as an installed expert**: `conversation/create` gains
41
+ * an optional `agent_id`, whose Definition supplies the chat's preset identity
42
+ * plus its own Skill and Connector fences — frozen at creation, since none of
43
+ * those keys is mutable afterwards (doc `27` 阶段 2a). **`fp-5` opens a Team's
44
+ * Leader the same way**: an optional `team_id` runs the `team/run` orchestration
45
+ * (members, template, fences) but stops before the goal turn, so the client
46
+ * speaks first; `agent_id` and `team_id` are mutually exclusive (阶段 2b).
47
+ * **`fp-6` makes the model and the reasoning level selectable per call**:
48
+ * `conversation/send` and `agent/run` each gain an optional `model` and
49
+ * `reasoning_effort`. The scope is deliberately the **conversation** (send) and
50
+ * the **run** (agent/run), not "just this turn": the Nomi runtime is built from
51
+ * the persisted row, so a send-carried value is a sticky switch that takes
52
+ * effect on that very turn (doc `29` §4). `ConversationView` also gains
53
+ * `reasoning_effort`, because a setting that can be written by three methods but
54
+ * read back by none is not a setting a client can honour (doc `29` §5.5).
55
+ * **`fp-7` adds the `zip` marketplace source kind**: `market/add` accepts
56
+ * `source_kind: "zip"`, one archive whose root *is* the market root. The
57
+ * official bundles move to it because the old `url` form made a first fetch
58
+ * mirror 14,714 files (611 MiB) for `experts` alone (doc `30`).
32
59
  */
33
- export declare const APP_SERVER_PROTOCOL_VERSION = "fp-1";
60
+ export declare const APP_SERVER_PROTOCOL_VERSION = "fp-7";
34
61
  export interface JsonRpcRequest {
35
62
  jsonrpc: "2.0";
36
63
  id: number | string;
@@ -151,10 +178,10 @@ export interface Capabilities {
151
178
  * The connector **call proxy** (`connector/call`, doc 24 §5).
152
179
  *
153
180
  * Separate from `connectors` on purpose: the catalog can be wired without the
154
- * proxy, and — more importantly — a host may wire the proxy while its
155
- * `[connector_proxy]` allowlist is empty, in which case every call answers
156
- * `policy_denied`. This flag says the *method* exists, not that any tool is
157
- * callable; only the host operator can make a pair callable.
181
+ * proxy, and a host may wire the proxy while its `[connector_proxy]` table is
182
+ * absent or disabled, in which case every call answers `policy_denied`. This
183
+ * flag says the *method* exists, not that any tool is callable; the host
184
+ * operator's own config decides that (doc `26` §4).
158
185
  */
159
186
  connector_calls: boolean;
160
187
  run_notifications: boolean;
@@ -246,6 +273,13 @@ export interface AgentRunInput {
246
273
  idempotencyKey?: string;
247
274
  /** Structured `@` mentions resolved by the composer (docs/agent-store/05 §4.7). */
248
275
  mentions?: MentionRef[];
276
+ /**
277
+ * Run-scoped model (doc `29` §6.1). Wins over the preset's own model **and**
278
+ * over the host default: explicit > preset > `~/.agent-store/config.toml`.
279
+ */
280
+ model?: ProviderWithModel;
281
+ /** Run-scoped OpenAI-style reasoning effort (doc `29` §6.1); applies to every attempt of the run. */
282
+ reasoningEffort?: ReasoningEffort | string;
249
283
  }
250
284
  export interface AgentRunRequestWire {
251
285
  agent_id: string;
@@ -258,6 +292,8 @@ export interface AgentRunRequestWire {
258
292
  command_id?: string;
259
293
  idempotency_key?: string;
260
294
  mentions?: MentionRef[];
295
+ model?: ProviderWithModel;
296
+ reasoning_effort?: string;
261
297
  }
262
298
  export interface RunReceipt {
263
299
  run_id: string;
@@ -431,6 +467,8 @@ export interface ConversationCreateInput {
431
467
  model?: ProviderWithModel;
432
468
  workspaceId?: string;
433
469
  reasoningEffort?: string;
470
+ agentId?: string;
471
+ teamId?: string;
434
472
  }
435
473
  export interface ConversationUpdateInput {
436
474
  name?: string;
@@ -469,6 +507,12 @@ export interface ConversationView {
469
507
  conversation_id: string;
470
508
  name: string;
471
509
  model: ProviderWithModel;
510
+ /**
511
+ * The conversation's current reasoning effort (doc `29` §5.5). Absent = not
512
+ * specified. `create` / `update` / `send` can all write it, so the view has to
513
+ * say what it is — otherwise the setting is write-only.
514
+ */
515
+ reasoning_effort?: string | null;
472
516
  status: string;
473
517
  created_at: number;
474
518
  modified_at: number;
@@ -840,6 +884,14 @@ export interface ConnectorSummary {
840
884
  export interface ConnectorTool {
841
885
  name: string;
842
886
  description?: string | null;
887
+ /**
888
+ * The upstream `tools/list` `inputSchema`, **verbatim** (doc `26` §5).
889
+ *
890
+ * Absent when the server published none, or when it was omitted to stay
891
+ * inside the host's tools budget — see `tools_truncated` on the response. It
892
+ * carries no transport, header or env value: only the tool's own parameters.
893
+ */
894
+ input_schema?: unknown;
843
895
  }
844
896
  export interface OAuthStatusView {
845
897
  state: "authenticated" | "not_authenticated" | "reauthorization_required" | string;
@@ -849,6 +901,12 @@ export interface OAuthStatusView {
849
901
  export interface ConnectorDetail extends ConnectorSummary {
850
902
  tool_filter?: string | null;
851
903
  tools: ConnectorTool[];
904
+ /**
905
+ * Some `input_schema` values were omitted to stay inside the host's tools
906
+ * budget. Names and descriptions are always kept, and a schema is only ever
907
+ * carried whole — never truncated. `false` also means "nothing was omitted".
908
+ */
909
+ tools_truncated: boolean;
852
910
  auth_status?: OAuthStatusView | null;
853
911
  source: string;
854
912
  compatibility_status: CompatibilityStatus;
@@ -863,6 +921,8 @@ export interface ConnectorProbeResult {
863
921
  connector_id: string;
864
922
  success: boolean;
865
923
  tools?: ConnectorTool[] | null;
924
+ /** Same rule as `ConnectorDetail.tools_truncated`: an honest omission. */
925
+ tools_truncated: boolean;
866
926
  error?: string | null;
867
927
  code?: string | null;
868
928
  }
@@ -1007,12 +1067,12 @@ export interface InstallOutcome {
1007
1067
  code?: string;
1008
1068
  message?: string;
1009
1069
  }
1010
- /** Wire-marketplace source kinds (Phase A: directory only). */
1011
- export type MarketplaceSourceKind = "directory" | "github" | "git" | "url";
1070
+ /** Wire-marketplace source kinds (Phase A: directory only; `zip` since `fp-7`). */
1071
+ export type MarketplaceSourceKind = "directory" | "github" | "git" | "url" | "zip";
1012
1072
  export interface MarketplaceAddRequest {
1013
1073
  name?: string;
1014
1074
  source_kind: MarketplaceSourceKind;
1015
- /** Local directory path / owner/repo / Git URL / HTTP URL. */
1075
+ /** Local directory path / owner/repo / Git URL / HTTP URL / archive URL. */
1016
1076
  source: string;
1017
1077
  }
1018
1078
  export interface MarketplaceSummary {
package/dist/index.d.mts CHANGED
@@ -28,9 +28,36 @@
28
28
  * party can run an installed MCP tool while the connection and its credentials
29
29
  * stay on the host. **`fp-1` changes the shape only** (date stamp → counter): a
30
30
  * `2026-…` value invites being read as a release date, and no wire behaviour
31
- * changed with the rename.
31
+ * changed with the rename. **`fp-2` carries the tools' parameters**
32
+ * (`ConnectorTool.input_schema`, plus `tools_truncated` on `ConnectorDetail`
33
+ * and `ConnectorProbeResult`): a caller that must *name* a tool to be granted it
34
+ * should be able to read what that tool takes. It is the counterpart of the
35
+ * host's `[connector_proxy]` grant moving from one tool at a time to the
36
+ * connector (doc `26`). **`fp-3` makes a Skill selectable per turn**:
37
+ * `conversation/send` gains an optional `mentions` list whose only honoured kind
38
+ * is `skill`, so one turn can mount a Skill's instructions without rewriting the
39
+ * conversation's create-time snapshot (doc `27` 阶段 1). **`fp-4` lets a
40
+ * conversation be created as an installed expert**: `conversation/create` gains
41
+ * an optional `agent_id`, whose Definition supplies the chat's preset identity
42
+ * plus its own Skill and Connector fences — frozen at creation, since none of
43
+ * those keys is mutable afterwards (doc `27` 阶段 2a). **`fp-5` opens a Team's
44
+ * Leader the same way**: an optional `team_id` runs the `team/run` orchestration
45
+ * (members, template, fences) but stops before the goal turn, so the client
46
+ * speaks first; `agent_id` and `team_id` are mutually exclusive (阶段 2b).
47
+ * **`fp-6` makes the model and the reasoning level selectable per call**:
48
+ * `conversation/send` and `agent/run` each gain an optional `model` and
49
+ * `reasoning_effort`. The scope is deliberately the **conversation** (send) and
50
+ * the **run** (agent/run), not "just this turn": the Nomi runtime is built from
51
+ * the persisted row, so a send-carried value is a sticky switch that takes
52
+ * effect on that very turn (doc `29` §4). `ConversationView` also gains
53
+ * `reasoning_effort`, because a setting that can be written by three methods but
54
+ * read back by none is not a setting a client can honour (doc `29` §5.5).
55
+ * **`fp-7` adds the `zip` marketplace source kind**: `market/add` accepts
56
+ * `source_kind: "zip"`, one archive whose root *is* the market root. The
57
+ * official bundles move to it because the old `url` form made a first fetch
58
+ * mirror 14,714 files (611 MiB) for `experts` alone (doc `30`).
32
59
  */
33
- export declare const APP_SERVER_PROTOCOL_VERSION = "fp-1";
60
+ export declare const APP_SERVER_PROTOCOL_VERSION = "fp-7";
34
61
  export interface JsonRpcRequest {
35
62
  jsonrpc: "2.0";
36
63
  id: number | string;
@@ -151,10 +178,10 @@ export interface Capabilities {
151
178
  * The connector **call proxy** (`connector/call`, doc 24 §5).
152
179
  *
153
180
  * Separate from `connectors` on purpose: the catalog can be wired without the
154
- * proxy, and — more importantly — a host may wire the proxy while its
155
- * `[connector_proxy]` allowlist is empty, in which case every call answers
156
- * `policy_denied`. This flag says the *method* exists, not that any tool is
157
- * callable; only the host operator can make a pair callable.
181
+ * proxy, and a host may wire the proxy while its `[connector_proxy]` table is
182
+ * absent or disabled, in which case every call answers `policy_denied`. This
183
+ * flag says the *method* exists, not that any tool is callable; the host
184
+ * operator's own config decides that (doc `26` §4).
158
185
  */
159
186
  connector_calls: boolean;
160
187
  run_notifications: boolean;
@@ -246,6 +273,13 @@ export interface AgentRunInput {
246
273
  idempotencyKey?: string;
247
274
  /** Structured `@` mentions resolved by the composer (docs/agent-store/05 §4.7). */
248
275
  mentions?: MentionRef[];
276
+ /**
277
+ * Run-scoped model (doc `29` §6.1). Wins over the preset's own model **and**
278
+ * over the host default: explicit > preset > `~/.agent-store/config.toml`.
279
+ */
280
+ model?: ProviderWithModel;
281
+ /** Run-scoped OpenAI-style reasoning effort (doc `29` §6.1); applies to every attempt of the run. */
282
+ reasoningEffort?: ReasoningEffort | string;
249
283
  }
250
284
  export interface AgentRunRequestWire {
251
285
  agent_id: string;
@@ -258,6 +292,8 @@ export interface AgentRunRequestWire {
258
292
  command_id?: string;
259
293
  idempotency_key?: string;
260
294
  mentions?: MentionRef[];
295
+ model?: ProviderWithModel;
296
+ reasoning_effort?: string;
261
297
  }
262
298
  export interface RunReceipt {
263
299
  run_id: string;
@@ -431,6 +467,8 @@ export interface ConversationCreateInput {
431
467
  model?: ProviderWithModel;
432
468
  workspaceId?: string;
433
469
  reasoningEffort?: string;
470
+ agentId?: string;
471
+ teamId?: string;
434
472
  }
435
473
  export interface ConversationUpdateInput {
436
474
  name?: string;
@@ -469,6 +507,12 @@ export interface ConversationView {
469
507
  conversation_id: string;
470
508
  name: string;
471
509
  model: ProviderWithModel;
510
+ /**
511
+ * The conversation's current reasoning effort (doc `29` §5.5). Absent = not
512
+ * specified. `create` / `update` / `send` can all write it, so the view has to
513
+ * say what it is — otherwise the setting is write-only.
514
+ */
515
+ reasoning_effort?: string | null;
472
516
  status: string;
473
517
  created_at: number;
474
518
  modified_at: number;
@@ -840,6 +884,14 @@ export interface ConnectorSummary {
840
884
  export interface ConnectorTool {
841
885
  name: string;
842
886
  description?: string | null;
887
+ /**
888
+ * The upstream `tools/list` `inputSchema`, **verbatim** (doc `26` §5).
889
+ *
890
+ * Absent when the server published none, or when it was omitted to stay
891
+ * inside the host's tools budget — see `tools_truncated` on the response. It
892
+ * carries no transport, header or env value: only the tool's own parameters.
893
+ */
894
+ input_schema?: unknown;
843
895
  }
844
896
  export interface OAuthStatusView {
845
897
  state: "authenticated" | "not_authenticated" | "reauthorization_required" | string;
@@ -849,6 +901,12 @@ export interface OAuthStatusView {
849
901
  export interface ConnectorDetail extends ConnectorSummary {
850
902
  tool_filter?: string | null;
851
903
  tools: ConnectorTool[];
904
+ /**
905
+ * Some `input_schema` values were omitted to stay inside the host's tools
906
+ * budget. Names and descriptions are always kept, and a schema is only ever
907
+ * carried whole — never truncated. `false` also means "nothing was omitted".
908
+ */
909
+ tools_truncated: boolean;
852
910
  auth_status?: OAuthStatusView | null;
853
911
  source: string;
854
912
  compatibility_status: CompatibilityStatus;
@@ -863,6 +921,8 @@ export interface ConnectorProbeResult {
863
921
  connector_id: string;
864
922
  success: boolean;
865
923
  tools?: ConnectorTool[] | null;
924
+ /** Same rule as `ConnectorDetail.tools_truncated`: an honest omission. */
925
+ tools_truncated: boolean;
866
926
  error?: string | null;
867
927
  code?: string | null;
868
928
  }
@@ -1007,12 +1067,12 @@ export interface InstallOutcome {
1007
1067
  code?: string;
1008
1068
  message?: string;
1009
1069
  }
1010
- /** Wire-marketplace source kinds (Phase A: directory only). */
1011
- export type MarketplaceSourceKind = "directory" | "github" | "git" | "url";
1070
+ /** Wire-marketplace source kinds (Phase A: directory only; `zip` since `fp-7`). */
1071
+ export type MarketplaceSourceKind = "directory" | "github" | "git" | "url" | "zip";
1012
1072
  export interface MarketplaceAddRequest {
1013
1073
  name?: string;
1014
1074
  source_kind: MarketplaceSourceKind;
1015
- /** Local directory path / owner/repo / Git URL / HTTP URL. */
1075
+ /** Local directory path / owner/repo / Git URL / HTTP URL / archive URL. */
1016
1076
  source: string;
1017
1077
  }
1018
1078
  export interface MarketplaceSummary {
package/dist/index.mjs CHANGED
@@ -28,9 +28,36 @@
28
28
  * party can run an installed MCP tool while the connection and its credentials
29
29
  * stay on the host. **`fp-1` changes the shape only** (date stamp → counter): a
30
30
  * `2026-…` value invites being read as a release date, and no wire behaviour
31
- * changed with the rename.
31
+ * changed with the rename. **`fp-2` carries the tools' parameters**
32
+ * (`ConnectorTool.input_schema`, plus `tools_truncated` on `ConnectorDetail`
33
+ * and `ConnectorProbeResult`): a caller that must *name* a tool to be granted it
34
+ * should be able to read what that tool takes. It is the counterpart of the
35
+ * host's `[connector_proxy]` grant moving from one tool at a time to the
36
+ * connector (doc `26`). **`fp-3` makes a Skill selectable per turn**:
37
+ * `conversation/send` gains an optional `mentions` list whose only honoured kind
38
+ * is `skill`, so one turn can mount a Skill's instructions without rewriting the
39
+ * conversation's create-time snapshot (doc `27` 阶段 1). **`fp-4` lets a
40
+ * conversation be created as an installed expert**: `conversation/create` gains
41
+ * an optional `agent_id`, whose Definition supplies the chat's preset identity
42
+ * plus its own Skill and Connector fences — frozen at creation, since none of
43
+ * those keys is mutable afterwards (doc `27` 阶段 2a). **`fp-5` opens a Team's
44
+ * Leader the same way**: an optional `team_id` runs the `team/run` orchestration
45
+ * (members, template, fences) but stops before the goal turn, so the client
46
+ * speaks first; `agent_id` and `team_id` are mutually exclusive (阶段 2b).
47
+ * **`fp-6` makes the model and the reasoning level selectable per call**:
48
+ * `conversation/send` and `agent/run` each gain an optional `model` and
49
+ * `reasoning_effort`. The scope is deliberately the **conversation** (send) and
50
+ * the **run** (agent/run), not "just this turn": the Nomi runtime is built from
51
+ * the persisted row, so a send-carried value is a sticky switch that takes
52
+ * effect on that very turn (doc `29` §4). `ConversationView` also gains
53
+ * `reasoning_effort`, because a setting that can be written by three methods but
54
+ * read back by none is not a setting a client can honour (doc `29` §5.5).
55
+ * **`fp-7` adds the `zip` marketplace source kind**: `market/add` accepts
56
+ * `source_kind: "zip"`, one archive whose root *is* the market root. The
57
+ * official bundles move to it because the old `url` form made a first fetch
58
+ * mirror 14,714 files (611 MiB) for `experts` alone (doc `30`).
32
59
  */
33
- const APP_SERVER_PROTOCOL_VERSION = "fp-1";
60
+ const APP_SERVER_PROTOCOL_VERSION = "fp-7";
34
61
  //#endregion
35
62
  //#region src/errors.ts
36
63
  var AppServerError = class extends Error {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flowy-agent-store/protocol",
3
- "version": "0.1.0-beta.4",
3
+ "version": "0.1.0-beta.6",
4
4
  "description": "Versioned App Server Protocol types and wire errors (no runtime, no DOM/Node deps)",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",