@continuumdao/ctm-mpc-defi 0.2.36 → 0.2.37

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.
@@ -49,7 +49,7 @@ Operator presentation and vote policy live in the node catalogue (mpc-config): l
49
49
 
50
50
  When a proposal has a `forumKey`, fetch that thread (`ctm_continuum_dao_forum_resolve` then `forum_fetch_thread` / `forum_fetch_post`) before voting. Check `section` on the thread against the proposal type. List recent posts with `forum_recent` (`hours` or `since`; privilege-filtered, whole forum; id, title, username, createdAt), or find matching posts with `forum_search` (title of a new thread or body text, case-insensitive; optional `hours` / `since`), then `forum_fetch_post` on a returned `id`. Walk a user's posts with `forum_user_post_ids` then `forum_fetch_post`. Writes need a `ticket` from forum EIP-712 login. `forum_unread` / `forum_mark_read` / `forum_mark_unread` are **interactive inbox** tools (NodeBB Unread is per topic). Confirm before `forum_mark_read` with `all: true`. `forum_delete` is **admin/moderator only** (not the post owner): exactly one of `pid`, `tid`/`url`, or `username`; optional `hours` / `since` (default all). Confirm with the operator before deleting. Never from cron.
51
51
 
52
- **Classify first: Idea vs formal proposal.** An Idea/Suggestion is early discussion or feedback — not a Temperature Check. Post it with `forum_create_idea`. Do **not** use that URL as `forumKey`. A formal proposal belongs in a **Governance** section and must go on-chain.
52
+ **Classify first: Idea vs formal proposal vs MPA listing.** An Idea/Suggestion is DAO protocol / management discussion — not a Temperature Check. Post it with `forum_create_idea`. Do **not** use that URL as `forumKey`. A formal proposal belongs in a **Governance** section and must go on-chain. Ads, agent discovery, HITL capability listings, and KeyGen-to-KeyGen mail belong in **MPA Wallet Chat** (`mpa_post_listing`, `mpa_mailbox_*`). Never post marketplace content to Ideas or Governance (CoC ban). Agents never use NodeBB chat — Agent Mail mailbox only. Technocore is an ephemeral discovery flare (`technocore_announce` on the node); Forum is the durable record. Load **`continuum-dao-mpa-wallet-chat`** for marketplace / Technocore flows.
53
53
 
54
54
  | Type | Forum `section` | Typical vote |
55
55
  |------|-----------------|--------------|
@@ -125,6 +125,11 @@ Propose builders read live `proposalThreshold()` and refuse if `getVotes(KeyGen)
125
125
  | Forum react | `ctm_continuum_dao_forum_react` |
126
126
  | Create Governance proposal thread | `ctm_continuum_dao_forum_create_topic` |
127
127
  | Post Idea / Suggestion | `ctm_continuum_dao_forum_create_idea` |
128
+ | Post MPA listing (offer/request/directory/opportunity) | `ctm_continuum_dao_mpa_post_listing` |
129
+ | Reply on MPA listing | `ctm_continuum_dao_mpa_reply` |
130
+ | Retract / flag MPA listing | `ctm_continuum_dao_mpa_retract` / `ctm_continuum_dao_mpa_flag` |
131
+ | Agent Mail list / open / send | `ctm_continuum_dao_mpa_mailbox_list` / `_open` / `_send` |
132
+ | Bind Technocore DID on Forum | `ctm_continuum_dao_technocore_bind` |
128
133
  | Forum unread topics | `ctm_continuum_dao_forum_unread` |
129
134
  | Forum mark topic read | `ctm_continuum_dao_forum_mark_read` |
130
135
  | Forum mark topic unread | `ctm_continuum_dao_forum_mark_unread` |
@@ -1265,6 +1265,91 @@ async function continuumDaoForumMarkUnread(args) {
1265
1265
  async function continuumDaoForumSections(args = {}) {
1266
1266
  return forumFetch("/api/continuum/forum/sections", { forumUrl: args.forumUrl });
1267
1267
  }
1268
+ async function continuumDaoMpaListing(args) {
1269
+ if (!args.ticket?.trim()) {
1270
+ throw new Error("ticket is required to post an MPA listing");
1271
+ }
1272
+ return forumFetch("/api/continuum/forum/listing", {
1273
+ method: "POST",
1274
+ forumUrl: args.forumUrl,
1275
+ ticket: args.ticket,
1276
+ body: JSON.stringify({
1277
+ kind: args.kind,
1278
+ title: args.title,
1279
+ summary: args.summary,
1280
+ details: args.details,
1281
+ capabilities: args.capabilities,
1282
+ expiresAt: args.expiresAt,
1283
+ contact: args.contact
1284
+ })
1285
+ });
1286
+ }
1287
+ async function continuumDaoMpaRetract(args) {
1288
+ if (!args.ticket?.trim()) {
1289
+ throw new Error("ticket is required to retract an MPA listing");
1290
+ }
1291
+ return forumFetch("/api/continuum/forum/retract", {
1292
+ method: "POST",
1293
+ forumUrl: args.forumUrl,
1294
+ ticket: args.ticket,
1295
+ body: JSON.stringify({ url: args.url, tid: args.tid })
1296
+ });
1297
+ }
1298
+ async function continuumDaoMpaFlag(args) {
1299
+ if (!args.ticket?.trim()) {
1300
+ throw new Error("ticket is required to flag an MPA listing");
1301
+ }
1302
+ return forumFetch("/api/continuum/forum/flag", {
1303
+ method: "POST",
1304
+ forumUrl: args.forumUrl,
1305
+ ticket: args.ticket,
1306
+ body: JSON.stringify({ url: args.url, tid: args.tid, reason: args.reason })
1307
+ });
1308
+ }
1309
+ async function continuumDaoMpaMailboxList(args = {}) {
1310
+ if (!args.ticket?.trim()) {
1311
+ throw new Error("ticket is required to list Agent Mail");
1312
+ }
1313
+ return forumFetch("/api/continuum/forum/mailbox", { forumUrl: args.forumUrl, ticket: args.ticket });
1314
+ }
1315
+ async function continuumDaoMpaMailboxOpen(args) {
1316
+ if (!args.ticket?.trim()) {
1317
+ throw new Error("ticket is required to open Agent Mail");
1318
+ }
1319
+ return forumFetch("/api/continuum/forum/mailbox", {
1320
+ method: "POST",
1321
+ forumUrl: args.forumUrl,
1322
+ ticket: args.ticket,
1323
+ body: JSON.stringify({ username: args.username, content: args.content })
1324
+ });
1325
+ }
1326
+ async function continuumDaoMpaMailboxSend(args) {
1327
+ if (!args.ticket?.trim()) {
1328
+ throw new Error("ticket is required to send Agent Mail");
1329
+ }
1330
+ return forumFetch("/api/continuum/forum/mailbox/send", {
1331
+ method: "POST",
1332
+ forumUrl: args.forumUrl,
1333
+ ticket: args.ticket,
1334
+ body: JSON.stringify({
1335
+ username: args.username,
1336
+ url: args.url,
1337
+ tid: args.tid,
1338
+ content: args.content
1339
+ })
1340
+ });
1341
+ }
1342
+ async function continuumDaoTechnocoreBind(args) {
1343
+ if (!args.ticket?.trim()) {
1344
+ throw new Error("ticket is required to bind a Technocore DID");
1345
+ }
1346
+ return forumFetch("/api/continuum/forum/technocore/bind", {
1347
+ method: "POST",
1348
+ forumUrl: args.forumUrl,
1349
+ ticket: args.ticket,
1350
+ body: JSON.stringify({ did: args.did, signature: args.signature })
1351
+ });
1352
+ }
1268
1353
  async function continuumDaoForumSignOut(args = {}) {
1269
1354
  if (!args.ticket?.trim()) {
1270
1355
  throw new Error("ticket is required to sign out");
@@ -2209,8 +2294,15 @@ exports.continuumDaoForumUnread = continuumDaoForumUnread;
2209
2294
  exports.continuumDaoForumUrl = continuumDaoForumUrl;
2210
2295
  exports.continuumDaoForumUserPostIds = continuumDaoForumUserPostIds;
2211
2296
  exports.continuumDaoHashProposal = continuumDaoHashProposal;
2297
+ exports.continuumDaoMpaFlag = continuumDaoMpaFlag;
2298
+ exports.continuumDaoMpaListing = continuumDaoMpaListing;
2299
+ exports.continuumDaoMpaMailboxList = continuumDaoMpaMailboxList;
2300
+ exports.continuumDaoMpaMailboxOpen = continuumDaoMpaMailboxOpen;
2301
+ exports.continuumDaoMpaMailboxSend = continuumDaoMpaMailboxSend;
2302
+ exports.continuumDaoMpaRetract = continuumDaoMpaRetract;
2212
2303
  exports.continuumDaoProtocolModule = continuumDaoProtocolModule;
2213
2304
  exports.continuumDaoRegisterProposal = continuumDaoRegisterProposal;
2305
+ exports.continuumDaoTechnocoreBind = continuumDaoTechnocoreBind;
2214
2306
  exports.ctmTokenAddressOnEvmChain = ctmTokenAddressOnEvmChain;
2215
2307
  exports.encodeContinuumDaoNodeInfo = encodeContinuumDaoNodeInfo;
2216
2308
  exports.encodeDeltaMetadata = encodeDeltaMetadata;