@flowy-agent-store/protocol 0.1.0-beta.8 → 0.1.0-beta.9

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
@@ -63,8 +63,15 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
63
63
  * shape, but the response carries the Agent Markdown body, which the catalog
64
64
  * faces deliberately never do; both methods are WebSocket-only, so the
65
65
  * documented route split becomes `48 / 73` (doc `32`).
66
+ * **`fp-13` adds the market policy face** (doc `37`): `market/settings` reads the
67
+ * host's effective sweep cadence, auto-upgrade kind whitelist and last-sweep
68
+ * reading, and `market/settings-set` writes the named keys through to the host's
69
+ * `config.toml`. The same change makes the background sweep able to upgrade
70
+ * entries installed from an `auto_update` market (official sources only, and
71
+ * never a `connector` or a component the user switched off by hand). Both
72
+ * methods are mapped, so the documented route split becomes `55 / 80`.
66
73
  */
67
- const APP_SERVER_PROTOCOL_VERSION = "fp-12";
74
+ const APP_SERVER_PROTOCOL_VERSION = "fp-13";
68
75
  /**
69
76
  * Format version of {@link ExpertPack}.
70
77
  *
package/dist/index.d.cts CHANGED
@@ -62,8 +62,15 @@
62
62
  * shape, but the response carries the Agent Markdown body, which the catalog
63
63
  * faces deliberately never do; both methods are WebSocket-only, so the
64
64
  * documented route split becomes `48 / 73` (doc `32`).
65
+ * **`fp-13` adds the market policy face** (doc `37`): `market/settings` reads the
66
+ * host's effective sweep cadence, auto-upgrade kind whitelist and last-sweep
67
+ * reading, and `market/settings-set` writes the named keys through to the host's
68
+ * `config.toml`. The same change makes the background sweep able to upgrade
69
+ * entries installed from an `auto_update` market (official sources only, and
70
+ * never a `connector` or a component the user switched off by hand). Both
71
+ * methods are mapped, so the documented route split becomes `55 / 80`.
65
72
  */
66
- export declare const APP_SERVER_PROTOCOL_VERSION = "fp-12";
73
+ export declare const APP_SERVER_PROTOCOL_VERSION = "fp-13";
67
74
  export interface JsonRpcRequest {
68
75
  jsonrpc: "2.0";
69
76
  id: number | string;
@@ -1295,6 +1302,73 @@ export interface StoreList {
1295
1302
  * background (D-SDK-1 ①) — the catalog may be incomplete. */
1296
1303
  markets_pending?: boolean;
1297
1304
  }
1305
+ /**
1306
+ * The host's effective market policy (doc `37` §3.2, `fp-13`).
1307
+ *
1308
+ * Two different questions, deliberately in one view: *when* the sweep runs
1309
+ * (`auto_update_interval_hours`) and *what it may touch*
1310
+ * (`entry_auto_update_kinds`). Both are read from the host's `config.toml` on
1311
+ * every call — nothing here is an in-memory override.
1312
+ */
1313
+ export interface MarketSettings {
1314
+ /**
1315
+ * Sweep cadence in hours. `null` = the background sweep is off.
1316
+ *
1317
+ * `0` is the wire spelling for "turn it off" on the way in
1318
+ * ({@link MarketSettingsPatch}), and reads back as `null`, because the host's
1319
+ * own `cadence()` already treats `0` as off rather than "every tick".
1320
+ */
1321
+ auto_update_interval_hours: number | null;
1322
+ /**
1323
+ * Entry kinds the sweep may auto-upgrade.
1324
+ *
1325
+ * Empty = the sweep only refreshes market indexes (the behaviour before doc
1326
+ * `37`). The default is `["agent", "team", "skill"]`: `"connector"` is never
1327
+ * implicit, because upgrading a connector reruns `upsert_server`, which marks
1328
+ * the server **disabled** whenever its configuration changed — an unattended
1329
+ * upgrade would silently disconnect a connector the user is using (`36` §3.4).
1330
+ */
1331
+ entry_auto_update_kinds: StoreItemKind[];
1332
+ /**
1333
+ * Whether this host actually runs a sweep at all.
1334
+ *
1335
+ * A host with no resolved `config.toml` path (the desktop host) reports
1336
+ * `false` and never sweeps, so a client must not read "the cadence is set" as
1337
+ * "updates will happen".
1338
+ */
1339
+ sweep_enabled: boolean;
1340
+ /** The most recent sweep, or `null` before the first one. In-memory only. */
1341
+ last_sweep: MarketSweepReport | null;
1342
+ }
1343
+ /**
1344
+ * `market/settings-set` patch. An **absent** field means "leave it alone" — the
1345
+ * two fields are independent, so a caller can change the cadence without
1346
+ * restating the whitelist.
1347
+ */
1348
+ export interface MarketSettingsPatch {
1349
+ /** Absent = unchanged; `0` = off; `> 0` = hours between sweeps. */
1350
+ auto_update_interval_hours?: number;
1351
+ /** Absent = unchanged; `[]` = upgrade nothing (index refresh only). */
1352
+ entry_auto_update_kinds?: StoreItemKind[];
1353
+ }
1354
+ /** One background sweep's reading (doc `37` §3.2, D8). */
1355
+ export interface MarketSweepReport {
1356
+ /** Epoch ms when the sweep finished. */
1357
+ at: number;
1358
+ /** Markets whose index refresh succeeded this round. */
1359
+ refreshed: number;
1360
+ /** Entries actually upgraded. */
1361
+ upgraded: number;
1362
+ /** Entries that were candidates and failed. Never silently dropped. */
1363
+ failed: MarketSweepFailure[];
1364
+ }
1365
+ /** One entry the sweep refused to upgrade, with the host's own reason. */
1366
+ export interface MarketSweepFailure {
1367
+ /** `<marketplace_id>/<entry_name>` — the {@link StoreItem.id} spelling. */
1368
+ id: string;
1369
+ /** Server-authored prose (not an i18n key). */
1370
+ error: string;
1371
+ }
1298
1372
  /** One model in the public catalog (`models/list`, REQ-PAR-05b). Provider
1299
1373
  * credentials, base URLs and health internals never cross this projection. */
1300
1374
  export interface ModelSummary {
@@ -1510,6 +1584,16 @@ export interface ExpertPack {
1510
1584
  description?: string | null;
1511
1585
  persona: ExpertPersona;
1512
1586
  model: ExpertModel;
1587
+ /**
1588
+ * The Definition's Skills, **by reference** — fetch the bytes with
1589
+ * `skills.files()` / `skills.readFile()`.
1590
+ *
1591
+ * Two sources, deliberately not merged on the wire: an **agent** pack's list is
1592
+ * that expert's own declaration, while a **team** pack's list is what the team's
1593
+ * own package installed, and each member keeps its own declaration in
1594
+ * `team.members[].skills`. An empty list means the package ships no skills, not
1595
+ * that you should go look at the members. `materializePack` unions both.
1596
+ */
1513
1597
  skills: ExpertSkillRef[];
1514
1598
  connectors: ExpertConnectorRef[];
1515
1599
  tool_policy: ExpertToolPolicy;
package/dist/index.d.mts CHANGED
@@ -62,8 +62,15 @@
62
62
  * shape, but the response carries the Agent Markdown body, which the catalog
63
63
  * faces deliberately never do; both methods are WebSocket-only, so the
64
64
  * documented route split becomes `48 / 73` (doc `32`).
65
+ * **`fp-13` adds the market policy face** (doc `37`): `market/settings` reads the
66
+ * host's effective sweep cadence, auto-upgrade kind whitelist and last-sweep
67
+ * reading, and `market/settings-set` writes the named keys through to the host's
68
+ * `config.toml`. The same change makes the background sweep able to upgrade
69
+ * entries installed from an `auto_update` market (official sources only, and
70
+ * never a `connector` or a component the user switched off by hand). Both
71
+ * methods are mapped, so the documented route split becomes `55 / 80`.
65
72
  */
66
- export declare const APP_SERVER_PROTOCOL_VERSION = "fp-12";
73
+ export declare const APP_SERVER_PROTOCOL_VERSION = "fp-13";
67
74
  export interface JsonRpcRequest {
68
75
  jsonrpc: "2.0";
69
76
  id: number | string;
@@ -1295,6 +1302,73 @@ export interface StoreList {
1295
1302
  * background (D-SDK-1 ①) — the catalog may be incomplete. */
1296
1303
  markets_pending?: boolean;
1297
1304
  }
1305
+ /**
1306
+ * The host's effective market policy (doc `37` §3.2, `fp-13`).
1307
+ *
1308
+ * Two different questions, deliberately in one view: *when* the sweep runs
1309
+ * (`auto_update_interval_hours`) and *what it may touch*
1310
+ * (`entry_auto_update_kinds`). Both are read from the host's `config.toml` on
1311
+ * every call — nothing here is an in-memory override.
1312
+ */
1313
+ export interface MarketSettings {
1314
+ /**
1315
+ * Sweep cadence in hours. `null` = the background sweep is off.
1316
+ *
1317
+ * `0` is the wire spelling for "turn it off" on the way in
1318
+ * ({@link MarketSettingsPatch}), and reads back as `null`, because the host's
1319
+ * own `cadence()` already treats `0` as off rather than "every tick".
1320
+ */
1321
+ auto_update_interval_hours: number | null;
1322
+ /**
1323
+ * Entry kinds the sweep may auto-upgrade.
1324
+ *
1325
+ * Empty = the sweep only refreshes market indexes (the behaviour before doc
1326
+ * `37`). The default is `["agent", "team", "skill"]`: `"connector"` is never
1327
+ * implicit, because upgrading a connector reruns `upsert_server`, which marks
1328
+ * the server **disabled** whenever its configuration changed — an unattended
1329
+ * upgrade would silently disconnect a connector the user is using (`36` §3.4).
1330
+ */
1331
+ entry_auto_update_kinds: StoreItemKind[];
1332
+ /**
1333
+ * Whether this host actually runs a sweep at all.
1334
+ *
1335
+ * A host with no resolved `config.toml` path (the desktop host) reports
1336
+ * `false` and never sweeps, so a client must not read "the cadence is set" as
1337
+ * "updates will happen".
1338
+ */
1339
+ sweep_enabled: boolean;
1340
+ /** The most recent sweep, or `null` before the first one. In-memory only. */
1341
+ last_sweep: MarketSweepReport | null;
1342
+ }
1343
+ /**
1344
+ * `market/settings-set` patch. An **absent** field means "leave it alone" — the
1345
+ * two fields are independent, so a caller can change the cadence without
1346
+ * restating the whitelist.
1347
+ */
1348
+ export interface MarketSettingsPatch {
1349
+ /** Absent = unchanged; `0` = off; `> 0` = hours between sweeps. */
1350
+ auto_update_interval_hours?: number;
1351
+ /** Absent = unchanged; `[]` = upgrade nothing (index refresh only). */
1352
+ entry_auto_update_kinds?: StoreItemKind[];
1353
+ }
1354
+ /** One background sweep's reading (doc `37` §3.2, D8). */
1355
+ export interface MarketSweepReport {
1356
+ /** Epoch ms when the sweep finished. */
1357
+ at: number;
1358
+ /** Markets whose index refresh succeeded this round. */
1359
+ refreshed: number;
1360
+ /** Entries actually upgraded. */
1361
+ upgraded: number;
1362
+ /** Entries that were candidates and failed. Never silently dropped. */
1363
+ failed: MarketSweepFailure[];
1364
+ }
1365
+ /** One entry the sweep refused to upgrade, with the host's own reason. */
1366
+ export interface MarketSweepFailure {
1367
+ /** `<marketplace_id>/<entry_name>` — the {@link StoreItem.id} spelling. */
1368
+ id: string;
1369
+ /** Server-authored prose (not an i18n key). */
1370
+ error: string;
1371
+ }
1298
1372
  /** One model in the public catalog (`models/list`, REQ-PAR-05b). Provider
1299
1373
  * credentials, base URLs and health internals never cross this projection. */
1300
1374
  export interface ModelSummary {
@@ -1510,6 +1584,16 @@ export interface ExpertPack {
1510
1584
  description?: string | null;
1511
1585
  persona: ExpertPersona;
1512
1586
  model: ExpertModel;
1587
+ /**
1588
+ * The Definition's Skills, **by reference** — fetch the bytes with
1589
+ * `skills.files()` / `skills.readFile()`.
1590
+ *
1591
+ * Two sources, deliberately not merged on the wire: an **agent** pack's list is
1592
+ * that expert's own declaration, while a **team** pack's list is what the team's
1593
+ * own package installed, and each member keeps its own declaration in
1594
+ * `team.members[].skills`. An empty list means the package ships no skills, not
1595
+ * that you should go look at the members. `materializePack` unions both.
1596
+ */
1513
1597
  skills: ExpertSkillRef[];
1514
1598
  connectors: ExpertConnectorRef[];
1515
1599
  tool_policy: ExpertToolPolicy;
package/dist/index.mjs CHANGED
@@ -62,8 +62,15 @@
62
62
  * shape, but the response carries the Agent Markdown body, which the catalog
63
63
  * faces deliberately never do; both methods are WebSocket-only, so the
64
64
  * documented route split becomes `48 / 73` (doc `32`).
65
+ * **`fp-13` adds the market policy face** (doc `37`): `market/settings` reads the
66
+ * host's effective sweep cadence, auto-upgrade kind whitelist and last-sweep
67
+ * reading, and `market/settings-set` writes the named keys through to the host's
68
+ * `config.toml`. The same change makes the background sweep able to upgrade
69
+ * entries installed from an `auto_update` market (official sources only, and
70
+ * never a `connector` or a component the user switched off by hand). Both
71
+ * methods are mapped, so the documented route split becomes `55 / 80`.
65
72
  */
66
- const APP_SERVER_PROTOCOL_VERSION = "fp-12";
73
+ const APP_SERVER_PROTOCOL_VERSION = "fp-13";
67
74
  /**
68
75
  * Format version of {@link ExpertPack}.
69
76
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flowy-agent-store/protocol",
3
- "version": "0.1.0-beta.8",
3
+ "version": "0.1.0-beta.9",
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",