@bongos/core 1.21.112 → 1.21.114

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 (265) hide show
  1. package/.bongos-core.json +616 -186
  2. package/.claude/skills/ask-for-help/SKILL.md +1 -1
  3. package/.claude/skills/bongos-feedback/SKILL.md +1 -1
  4. package/.claude/skills/builder-sequence/SKILL.md +1 -1
  5. package/.claude/skills/builder-ship/SKILL.md +1 -0
  6. package/GOVERNMENT.md +128 -11
  7. package/clients/bongos-client/README.md +1 -1
  8. package/clients/bongos-client/bongos-client.global.js +28 -0
  9. package/clients/bongos-client/index.cjs +28 -0
  10. package/clients/bongos-client/index.d.ts +45 -2
  11. package/clients/bongos-client/index.mjs +28 -0
  12. package/docs/adr/0372-an-ask-is-stored-per-docket-matter-and-the-server-refuses-slop.md +33 -0
  13. package/docs/adr/0373-an-ai-session-files-a-blocker-with-an-ask.md +31 -0
  14. package/docs/adr/0374-a-building-lead-is-a-held-position-appointed-by-a-people-matter.md +30 -0
  15. package/docs/adr/0375-who-may-build-without-a-vote-comes-from-the-form-of-government.md +38 -0
  16. package/docs/adr/0376-every-ask-is-routed-to-a-real-seat-on-the-server.md +30 -0
  17. package/docs/adr/0377-governance-is-a-held-position-read-on-me.md +24 -0
  18. package/docs/adr/0378-a-leads-build-outs-are-rows-built-at-once-or-by-a-passed-vote.md +33 -0
  19. package/docs/adr/0379-the-treasury-is-pots-per-goal-a-reserve-and-borrowing-over-real-spend.md +32 -0
  20. package/docs/adr/0380-a-strictness-preset-is-a-bundle-of-laws-switched-by-one-laws-vote.md +26 -0
  21. package/docs/adr/README.md +10 -1
  22. package/docs/api/openapi.json +989 -87
  23. package/docs/api-reference.md +18 -4
  24. package/docs/copy-inventory.md +343 -262
  25. package/docs/copy-registry.json +1223 -426
  26. package/docs/file-map.md +2 -1
  27. package/docs/module-api-changelog.md +4 -0
  28. package/docs/packs/engineer.md +2 -1
  29. package/docs/page-inventory.json +91 -6
  30. package/docs/page-readings.json +5017 -4458
  31. package/modules/builder-settings/law-locks.js +202 -0
  32. package/modules/builder-settings/routes/settings.js +66 -6
  33. package/modules/builder-settings/settings.js +7 -0
  34. package/modules/discord/ship-broadcast.js +22 -13
  35. package/modules/government/asks-db.js +54 -0
  36. package/modules/government/asks.js +269 -0
  37. package/modules/government/board-idea-reads.js +68 -0
  38. package/modules/government/board.js +21 -57
  39. package/modules/government/build-rights.js +148 -0
  40. package/modules/government/buildouts.js +160 -0
  41. package/modules/government/counts.js +81 -0
  42. package/modules/government/db.js +242 -0
  43. package/modules/government/decision-board.js +234 -8
  44. package/modules/government/decision-rules.js +2 -0
  45. package/modules/government/docket.js +114 -6
  46. package/modules/government/law-board.js +131 -0
  47. package/modules/government/laws.js +241 -0
  48. package/modules/government/leads.js +170 -0
  49. package/modules/government/migrations/government_027_laws.sql +143 -0
  50. package/modules/government/migrations/government_028_asks.sql +57 -0
  51. package/modules/government/migrations/government_029_leads.sql +135 -0
  52. package/modules/government/migrations/government_030_buildouts.sql +111 -0
  53. package/modules/government/migrations/government_031_treasury.sql +107 -0
  54. package/modules/government/module.json +2 -1
  55. package/modules/government/pollers/treasury-borrow.js +62 -0
  56. package/modules/government/positions.js +107 -0
  57. package/modules/government/presets.js +149 -0
  58. package/modules/government/routes/government.js +425 -2
  59. package/modules/government/routing.js +154 -0
  60. package/modules/government/treasury-db.js +166 -0
  61. package/modules/government/treasury.js +241 -0
  62. package/modules/hall-ui/public/atlas.html +2 -2
  63. package/modules/hall-ui/public/blockers.html +2 -2
  64. package/modules/hall-ui/public/board-room.html +2 -2
  65. package/modules/hall-ui/public/board-room.js +2 -0
  66. package/modules/hall-ui/public/city-draw.js +604 -11
  67. package/modules/hall-ui/public/city.css +157 -1
  68. package/modules/hall-ui/public/city.html +37 -7
  69. package/modules/hall-ui/public/city.js +441 -21
  70. package/modules/hall-ui/public/city.states.json +110 -5
  71. package/modules/hall-ui/public/collab.html +2 -2
  72. package/modules/hall-ui/public/commands.html +2 -2
  73. package/modules/hall-ui/public/copy-desk.html +2 -2
  74. package/modules/hall-ui/public/craft-mode.js +112 -29
  75. package/modules/hall-ui/public/deploy.html +2 -2
  76. package/modules/hall-ui/public/diagram-viewer.css +12 -0
  77. package/modules/hall-ui/public/diagram-viewer.js +4 -0
  78. package/modules/hall-ui/public/diagrams.html +2 -2
  79. package/modules/hall-ui/public/drachmae.html +2 -2
  80. package/modules/hall-ui/public/fleet.html +2 -2
  81. package/modules/hall-ui/public/gate.html +2 -2
  82. package/modules/hall-ui/public/goal-map.html +2 -2
  83. package/modules/hall-ui/public/goals.html +2 -2
  84. package/modules/hall-ui/public/gov-feeds.js +141 -0
  85. package/modules/hall-ui/public/gov-living.js +1002 -0
  86. package/modules/hall-ui/public/gov-positions.js +97 -0
  87. package/modules/hall-ui/public/government.html +2 -2
  88. package/modules/hall-ui/public/hall-render.js +3 -0
  89. package/modules/hall-ui/public/idea.html +2 -2
  90. package/modules/hall-ui/public/ideas.html +2 -2
  91. package/modules/hall-ui/public/index.html +3 -3
  92. package/modules/hall-ui/public/modules.html +2 -2
  93. package/modules/hall-ui/public/my-agents.css +334 -0
  94. package/modules/hall-ui/public/my-agents.html +72 -0
  95. package/modules/hall-ui/public/my-agents.js +603 -0
  96. package/modules/hall-ui/public/my-agents.states.json +37 -0
  97. package/modules/hall-ui/public/primer.html +2 -2
  98. package/modules/hall-ui/public/profile-connections.js +40 -28
  99. package/modules/hall-ui/public/profile.html +2 -2
  100. package/modules/hall-ui/public/project-settings.html +2 -2
  101. package/modules/hall-ui/public/ranks.html +2 -2
  102. package/modules/hall-ui/public/roadmap.html +2 -2
  103. package/modules/hall-ui/public/room.css +8 -0
  104. package/modules/hall-ui/public/roster.html +2 -2
  105. package/modules/hall-ui/public/sessions.html +2 -2
  106. package/modules/hall-ui/public/settings.html +2 -2
  107. package/modules/hall-ui/public/shell.js +116 -16
  108. package/modules/hall-ui/public/street-card.js +18 -1
  109. package/modules/hall-ui/public/street-deck.css +299 -0
  110. package/modules/hall-ui/public/street-deck.js +1145 -0
  111. package/modules/hall-ui/public/street-depth.js +712 -0
  112. package/modules/hall-ui/public/street-desk.js +5 -2
  113. package/modules/hall-ui/public/street-draw.js +109 -16
  114. package/modules/hall-ui/public/street-inside.js +137 -22
  115. package/modules/hall-ui/public/street-office.js +705 -0
  116. package/modules/hall-ui/public/street.css +161 -11
  117. package/modules/hall-ui/public/street.html +41 -11
  118. package/modules/hall-ui/public/street.js +78 -66
  119. package/modules/hall-ui/public/street.states.json +129 -21
  120. package/modules/hall-ui/public/studio.html +2 -2
  121. package/modules/hall-ui/public/style.css +5 -1
  122. package/modules/hall-ui/public/task.html +2 -2
  123. package/modules/hall-ui/public/thinking.html +2 -2
  124. package/modules/hall-ui/public/tweak-editor.html +2 -2
  125. package/modules/hall-ui/public/watch.html +2 -2
  126. package/modules/hall-ui/public/watch.js +14 -1
  127. package/modules/hall-ui/public/work.html +2 -2
  128. package/modules/hall-ui/records/living-city.md +57 -0
  129. package/modules/hall-ui/records/my-agents.md +21 -0
  130. package/modules/hall-ui/records/oversight-family.md +1 -0
  131. package/modules/hall-ui/records/profile-connections.md +10 -0
  132. package/modules/hall-ui/records/reading-rooms.md +2 -0
  133. package/modules/ideas/routes/blockers.js +92 -3
  134. package/modules/lifecycle/module.json +2 -1
  135. package/modules/lifecycle/moving.js +17 -1
  136. package/modules/lifecycle/routes/moving.js +6 -0
  137. package/modules/lifecycle/routes/project-settings.js +23 -0
  138. package/modules/onboarding/approval-broadcast.js +8 -0
  139. package/modules/onboarding/routes/access-requests.js +16 -6
  140. package/modules/platform-identity/connections.js +13 -2
  141. package/modules/platform-identity/routes/connections.js +7 -1
  142. package/modules/public-landing/public/account-private.states.json +2 -2
  143. package/modules/public-landing/public/account.html +65 -5
  144. package/modules/public-landing/public/account.states.json +3 -3
  145. package/modules/public-landing/public/assets/world/r2-bongos-chrome-b.jpg.json +1 -1
  146. package/modules/public-landing/public/assets/world/r2-bongos-chrome-b.webp +0 -0
  147. package/modules/public-landing/public/assets/world/r2-bongos-chrome-b.webp.json +13 -0
  148. package/modules/public-landing/public/assets/world/r2-chrome-blob-one.jpg.json +1 -1
  149. package/modules/public-landing/public/assets/world/r2-chrome-blob-one.webp +0 -0
  150. package/modules/public-landing/public/assets/world/r2-chrome-blob-one.webp.json +13 -0
  151. package/modules/public-landing/public/assets/world/r2-chrome-blobs-set.jpg.json +1 -1
  152. package/modules/public-landing/public/assets/world/r2-chrome-blobs-set.webp +0 -0
  153. package/modules/public-landing/public/assets/world/r2-chrome-blobs-set.webp.json +13 -0
  154. package/modules/public-landing/public/assets/world.css +4 -4
  155. package/modules/public-landing/public/connections-empty.states.json +14 -0
  156. package/modules/public-landing/public/connections-inactive.states.json +14 -0
  157. package/modules/public-landing/public/connections.html +450 -0
  158. package/modules/public-landing/public/connections.probes.json +414 -0
  159. package/modules/public-landing/public/connections.states.json +17 -0
  160. package/modules/public-landing/public/contact.html +2 -2
  161. package/modules/public-landing/public/guild.html +2 -2
  162. package/modules/public-landing/public/index.html +2 -2
  163. package/modules/public-landing/public/invitations.html +2 -2
  164. package/modules/public-landing/public/privacy.html +2 -2
  165. package/modules/public-landing/public/projects.html +2 -2
  166. package/modules/public-landing/public/projects.probes.json +6 -2
  167. package/modules/public-landing/public/terms.html +2 -2
  168. package/modules/ui-design/kit/fixtures/connections-empty.json +12 -0
  169. package/modules/ui-design/kit/fixtures/connections-inactive.json +7 -0
  170. package/modules/ui-design/kit/fixtures/connections.json +22 -0
  171. package/modules/ui-design/kit/serve.js +95 -0
  172. package/package-lock.json +2 -2
  173. package/package.json +1 -1
  174. package/release-notes.json +128 -0
  175. package/scripts/discord/README.md +8 -5
  176. package/scripts/discord/post.js +12 -1
  177. package/scripts/gds/artifact-audit.js +20 -3
  178. package/scripts/gds/ask.js +164 -0
  179. package/scripts/gds/autobongos-run.js +20 -5
  180. package/scripts/gds/autobongos-tweak-lane.js +262 -0
  181. package/scripts/gds/autobongos-verify.js +21 -2
  182. package/scripts/gds/claim.js +2 -0
  183. package/scripts/gds/government-walk.js +638 -4
  184. package/scripts/gds/pulse.js +9 -6
  185. package/scripts/gds/ship-escalation.js +22 -3
  186. package/scripts/gds/ship-finish.js +5 -4
  187. package/scripts/gds/ship-merge-gate.js +18 -6
  188. package/scripts/gds/tweak-halt.js +1 -0
  189. package/scripts/hall-preview/README.md +41 -1
  190. package/scripts/hall-preview/pref-writes.js +140 -0
  191. package/scripts/hall-preview/refresh-fixtures.js +101 -7
  192. package/scripts/hall-preview/scrub-identity.js +366 -7
  193. package/scripts/hall-preview/server.js +27 -1
  194. package/scripts/render-diagrams.sh +4 -2
  195. package/src/bongos/auth-idp.js +6 -1
  196. package/src/bongos/project-settings.js +41 -0
  197. package/src/bongos/route-rank-check.js +27 -0
  198. package/src/bongos/routes/me.js +68 -7
  199. package/src/bongos/serve-internal.js +5 -1
  200. package/src/module-api.js +7 -1
  201. package/src/platform-server.js +10 -0
  202. package/tests/application_lifecycle.mjs +47 -5
  203. package/tests/autobongos_tweak_lane.mjs +208 -0
  204. package/tests/conductor_main_e2e.mjs +21 -0
  205. package/tests/connections_api.mjs +18 -0
  206. package/tests/craft_mode_nav.mjs +5 -3
  207. package/tests/craft_mode_tallies.mjs +52 -16
  208. package/tests/discord_approvals.mjs +11 -0
  209. package/tests/discord_channels.mjs +20 -0
  210. package/tests/fixtures/gov-seated.mjs +64 -0
  211. package/tests/fixtures/government-ask-cards.json +1284 -0
  212. package/tests/government_act_alone_buildings.mjs +1 -0
  213. package/tests/government_agent_asks.mjs +322 -0
  214. package/tests/government_asks.mjs +408 -0
  215. package/tests/government_build_rights.mjs +253 -0
  216. package/tests/government_buildouts.mjs +382 -0
  217. package/tests/government_counts.mjs +143 -0
  218. package/tests/government_decision_rules.mjs +5 -1
  219. package/tests/government_laws.mjs +488 -0
  220. package/tests/government_laws_session.mjs +321 -0
  221. package/tests/government_leads.mjs +375 -0
  222. package/tests/government_positions.mjs +127 -0
  223. package/tests/government_presets.mjs +215 -0
  224. package/tests/government_routes.mjs +8 -1
  225. package/tests/government_routing.mjs +118 -0
  226. package/tests/government_seed.mjs +5 -0
  227. package/tests/government_treasury.mjs +394 -0
  228. package/tests/governor_docket.mjs +26 -2
  229. package/tests/hall_buildouts.mjs +208 -0
  230. package/tests/hall_city.mjs +14 -6
  231. package/tests/hall_city_living.mjs +617 -0
  232. package/tests/hall_gov_counts.mjs +336 -0
  233. package/tests/hall_gov_living.mjs +636 -0
  234. package/tests/hall_gov_real_site.mjs +655 -0
  235. package/tests/hall_matter_card.mjs +6 -1
  236. package/tests/hall_my_agents.mjs +481 -0
  237. package/tests/hall_nav.mjs +107 -4
  238. package/tests/hall_page_gate_map.mjs +4 -0
  239. package/tests/hall_preview_governor_fixtures.mjs +30 -3
  240. package/tests/hall_preview_scrub.mjs +59 -1
  241. package/tests/hall_preview_security.mjs +169 -0
  242. package/tests/hall_reading_world.mjs +44 -0
  243. package/tests/hall_roster_world.mjs +6 -2
  244. package/tests/hall_street.mjs +18 -2
  245. package/tests/hall_street_amend.mjs +1 -1
  246. package/tests/hall_street_deck.mjs +609 -0
  247. package/tests/hall_street_depth.mjs +559 -0
  248. package/tests/hall_street_desk.mjs +1 -1
  249. package/tests/hall_street_inside.mjs +29 -5
  250. package/tests/hall_tweak_editor.mjs +4 -1
  251. package/tests/hub_account_page.mjs +94 -3
  252. package/tests/hub_connections_page.mjs +507 -0
  253. package/tests/hub_invite_badge.mjs +1 -1
  254. package/tests/idp_device_exchange.mjs +18 -0
  255. package/tests/landing_legal_pages.mjs +8 -5
  256. package/tests/landing_page.mjs +23 -4
  257. package/tests/nav_permission_atoms.mjs +4 -1
  258. package/tests/profile_connections_ui.mjs +88 -25
  259. package/tests/projects_hub.mjs +15 -0
  260. package/tests/render_check.mjs +2 -2
  261. package/tests/ship_broadcast_routing.mjs +57 -16
  262. package/tests/ship_broadcast_server.mjs +40 -7
  263. package/tests/ship_merge_gate.mjs +19 -0
  264. package/tests/ui_design_kit.mjs +2 -2
  265. package/tests/watch_applications_queue.mjs +23 -0
@@ -0,0 +1,141 @@
1
+ // modules/hall-ui/public/gov-feeds.js — the governor's reads, ONCE per page view,
2
+ // and the counts every surface prints (task 1004685, the living-city prototype).
3
+ //
4
+ // WHY. The city, the street, the decision deck and the shell's Governing tally
5
+ // each read the governor feeds, and each used to read its own subset and count
6
+ // for itself: the city said 24 on you, the street 37, the deck 38 and the shell
7
+ // 9. Now there is one reader with one memo per page. city.js and street.js ask it
8
+ // for the feeds they draw; the deck draws from the street's own living model, so
9
+ // it reads nothing; the shell's tally asks for COUNT_FEEDS alone, which
10
+ // tests/hall_gov_counts.mjs proves give the same counts as every feed. Every
11
+ // number comes from GovLiving.countsOf (gov-living.js), with one plain label.
12
+ //
13
+ // THE PAGE'S OWN ANSWERS. An answer given on this page (a city card, the deck)
14
+ // leaves every count at once: the page registers its session with useSession(),
15
+ // and changed() tells every listener (the shell's tally, the page itself) to
16
+ // count again. After an act that WRITES, refresh() drops the reads an act can
17
+ // change (AFTER_ACT), so the next read of each is fresh: the living model is read
18
+ // again once, and every surface follows it.
19
+ //
20
+ // A feed that fails resolves to null and leaves its part of the model out; it is
21
+ // memoised like any other answer, so a failing feed costs one request per page.
22
+ // Browser code; node can require it (the pure half: FEEDS, COUNT_FEEDS, AFTER_ACT,
23
+ // inputOf) with no window, and its reader then answers null.
24
+
25
+ (function (root) {
26
+ 'use strict';
27
+
28
+ const API = '/api/bongos';
29
+ // every read the living model takes, by the name livingModel() gives its input
30
+ const FEEDS = Object.freeze({
31
+ docket: '/government/docket',
32
+ // the counts every surface prints, answered once by the server (task 1004716)
33
+ counts: '/government/counts',
34
+ constitution: '/government/constitution',
35
+ // the project's laws in force (task 1004706)
36
+ laws: '/government/laws',
37
+ // who leads each building, and the owner seat an unseated one falls to (task 1004709)
38
+ leads: '/government/leads',
39
+ // the pots each goal draws from, the reserve, the spend cap (task 1004712)
40
+ treasury: '/government/treasury',
41
+ // the strictness presets, and which one the laws in force amount to (task 1004715)
42
+ presets: '/government/presets',
43
+ goals: '/goals',
44
+ rollups: '/goals/rollups',
45
+ // the active claims ride on the claimable feed; one claimable row is plenty
46
+ claims: '/tasks/claimable?limit=1',
47
+ tasks: '/tasks?status=active&limit=200',
48
+ cost: '/public/cost-summary',
49
+ roster: '/builders/roster',
50
+ me: '/me',
51
+ blockers: '/blockers?limit=100',
52
+ fence: '/autonomy/fence',
53
+ moving: '/moving',
54
+ });
55
+ // what the counts stand on, and no more: GET /government/counts, the server's one
56
+ // read of all five (task 1004716), and /me (the shell's read, shared).
57
+ const COUNT_FEEDS = Object.freeze(['counts', 'me']);
58
+ // what an act can change: these are read fresh after one
59
+ const AFTER_ACT = Object.freeze(['docket', 'counts', 'blockers', 'claims', 'tasks', 'moving', 'rollups', 'treasury']);
60
+
61
+ const memo = {};
62
+ const listeners = [];
63
+ let session = null;
64
+
65
+ // a body, or false for a refusal (403: the shell reads that as "not yours"), or null
66
+ function getJson(url) {
67
+ if (typeof root.fetch !== 'function') return Promise.resolve(null);
68
+ return root.fetch(url, { credentials: 'same-origin', headers: { accept: 'application/json' } })
69
+ .then((r) => (r && r.ok ? r.json() : r && r.status === 403 ? false : null))
70
+ .catch(() => null);
71
+ }
72
+ // One feed's body (or null), read once per page view until refresh() drops it.
73
+ // THE SHELL'S READS ARE SHARED: shell.js leaves the reads it already made (/me)
74
+ // on window.__hallReads, and
75
+ // the first ask here adopts one instead of asking again; the shell, in turn,
76
+ // takes this memo's read when the page made it first (byPath).
77
+ function get(key) {
78
+ if (!Object.prototype.hasOwnProperty.call(FEEDS, key)) return Promise.resolve(null);
79
+ if (!memo[key]) {
80
+ const shared = root.__hallReads && root.__hallReads[FEEDS[key]];
81
+ if (shared) delete root.__hallReads[FEEDS[key]];
82
+ memo[key] = shared ? Promise.resolve(shared).catch(() => null) : getJson(API + FEEDS[key]);
83
+ }
84
+ return memo[key];
85
+ }
86
+ // the memoised read of the feed served at this path ('/me'), or null for another path
87
+ function byPath(path) {
88
+ const key = Object.keys(FEEDS).find((k) => FEEDS[k] === path);
89
+ return key ? get(key) : null;
90
+ }
91
+ // several feeds as { key: body }; every feed when keys is omitted
92
+ function read(keys) {
93
+ const ks = Array.isArray(keys) ? keys : Object.keys(FEEDS);
94
+ return Promise.all(ks.map(get)).then((res) => {
95
+ const out = {};
96
+ ks.forEach((k, i) => { out[k] = res[i]; });
97
+ return out;
98
+ });
99
+ }
100
+ function refresh(keys) {
101
+ (Array.isArray(keys) ? keys : AFTER_ACT).forEach((k) => { delete memo[k]; });
102
+ changed();
103
+ }
104
+
105
+ // the living model's input: livingModel() takes each route's own body
106
+ function inputOf(raw, now) { return Object.assign({}, raw || {}, { now: now }); }
107
+ function model(raw, now) {
108
+ const L = root.GovLiving;
109
+ if (!L || typeof L.livingModel !== 'function') return null;
110
+ try { return L.livingModel(inputOf(raw, now == null ? Date.now() : now)); } catch (_) { return null; }
111
+ }
112
+
113
+ // the page's own answers this visit: fn() → { answered: [ids], extra: [asks] }
114
+ function useSession(fn) { session = typeof fn === 'function' ? fn : null; }
115
+ function sessionNow() {
116
+ try { return session ? session() || null : null; } catch (_) { return null; }
117
+ }
118
+ // the counts over a model the page already holds (null without GovLiving)
119
+ function countsFrom(m) {
120
+ const L = root.GovLiving;
121
+ return L && m && typeof L.countsOf === 'function' ? L.countsOf(m, sessionNow()) : null;
122
+ }
123
+ // the counts from COUNT_FEEDS (the shell's tally): the same numbers the page prints.
124
+ // Every feed the page has already read is in the memo and costs nothing, so it
125
+ // rides along (the city and the street — the tally's two pages — read them all).
126
+ function counts() {
127
+ const keys = COUNT_FEEDS.concat(Object.keys(memo).filter((k) => COUNT_FEEDS.indexOf(k) < 0));
128
+ return read(keys).then((raw) => countsFrom(model(raw)));
129
+ }
130
+
131
+ function onChange(fn) { if (typeof fn === 'function') listeners.push(fn); }
132
+ function changed() { listeners.slice().forEach((fn) => { try { fn(); } catch (_) { /* a listener never blocks */ } }); }
133
+
134
+ const api = {
135
+ FEEDS: FEEDS, COUNT_FEEDS: COUNT_FEEDS, AFTER_ACT: AFTER_ACT, API: API,
136
+ get: get, byPath: byPath, read: read, refresh: refresh, inputOf: inputOf, model: model,
137
+ useSession: useSession, countsFrom: countsFrom, counts: counts, onChange: onChange, changed: changed,
138
+ };
139
+ root.GovFeeds = api;
140
+ if (typeof module !== 'undefined' && module.exports) module.exports = api;
141
+ }(typeof window !== 'undefined' ? window : globalThis));