@kya-os/create-mcpi-app 1.11.3 → 1.11.4

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.
@@ -1,5 +1,5 @@
1
1
 
2
- > @kya-os/create-mcpi-app@1.11.3 build /home/runner/work/xmcp-i/xmcp-i/packages/create-mcpi-app
2
+ > @kya-os/create-mcpi-app@1.11.4 build /home/runner/work/xmcp-i/xmcp-i/packages/create-mcpi-app
3
3
  > tsc && chmod +x dist/index.js && node --import tsx scripts/build-bundles.ts
4
4
 
5
5
  🔨 Building template bundles...
@@ -7,23 +7,23 @@
7
7
 
8
8
  📦 Building template: blank
9
9
  ✅ Source files written to /home/runner/work/xmcp-i/xmcp-i/packages/create-mcpi-app/dist/.tmp-bundles/blank
10
- ✅ Bundle built: 8170758 bytes, hash: sha256:72e778e39a337...
10
+ ✅ Bundle built: 8172141 bytes, hash: sha256:964b549d9b27c...
11
11
 
12
12
  📦 Building template: hardware-world
13
13
  ✅ Source files written to /home/runner/work/xmcp-i/xmcp-i/packages/create-mcpi-app/dist/.tmp-bundles/hardware-world
14
- ✅ Bundle built: 8183177 bytes, hash: sha256:1edd8330eddd7...
14
+ ✅ Bundle built: 8184560 bytes, hash: sha256:613ed3ca8a593...
15
15
 
16
16
  📦 Building template: ecommerce
17
17
  ✅ Source files written to /home/runner/work/xmcp-i/xmcp-i/packages/create-mcpi-app/dist/.tmp-bundles/ecommerce
18
- ✅ Bundle built: 8172452 bytes, hash: sha256:09a58de753d02...
18
+ ✅ Bundle built: 8173835 bytes, hash: sha256:e1de25fb7a73e...
19
19
 
20
20
  📦 Building template: mix-station
21
21
  ✅ Source files written to /home/runner/work/xmcp-i/xmcp-i/packages/create-mcpi-app/dist/.tmp-bundles/mix-station
22
- ✅ Bundle built: 8185802 bytes, hash: sha256:0c29ba4e04375...
22
+ ✅ Bundle built: 8187185 bytes, hash: sha256:b5acc100ef55c...
23
23
 
24
24
  ✅ All bundles built successfully!
25
25
  Output: /home/runner/work/xmcp-i/xmcp-i/packages/create-mcpi-app/dist/bundles
26
- Version: 1.11.3
27
- Framework: 1.14.3
26
+ Version: 1.11.4
27
+ Framework: 1.14.5
28
28
  Templates: blank, hardware-world, ecommerce, mix-station
29
29
  Manifest: /home/runner/work/xmcp-i/xmcp-i/packages/create-mcpi-app/dist/bundles/manifest.json
@@ -159646,7 +159646,12 @@ function anchorSnapshot(rec) {
159646
159646
  nativePolicyRevision: rec.nativePolicyRevision
159647
159647
  };
159648
159648
  }
159649
- var pendingBody = () => ({ status: "pending" });
159649
+ var pendingBody = (rec, now2) => ({
159650
+ status: "pending",
159651
+ // This is the remaining authorization-session lifetime, not the future VC's
159652
+ // lifetime. Preserve the frozen legacy response and the original DO deadline.
159653
+ ...rec.nativeHttp ? { expires_in: Math.max(0, Math.floor((rec.expiresAt - now2) / 1e3)) } : {}
159654
+ });
159650
159655
  var pinnedErr = () => ({ error: KYAOS_ERRORS.pickupPinned });
159651
159656
  var invalidSessionErr = () => ({ error: KYAOS_ERRORS.invalidSession });
159652
159657
  var pickupExpiredErr = () => ({ error: KYAOS_ERRORS.pickupExpired });
@@ -159750,7 +159755,7 @@ function reducePoll(rec, holder, now2) {
159750
159755
  }
159751
159756
  return {
159752
159757
  record: { ...working, lastPollAt: now2 },
159753
- response: { status: 202, body: pendingBody() }
159758
+ response: { status: 202, body: pendingBody(working, now2) }
159754
159759
  };
159755
159760
  }
159756
159761
  function reduceApprove(rec, input2, now2) {
@@ -159900,7 +159905,7 @@ async function handlePickupInternal(ctx, request, now2) {
159900
159905
  // ../mcp-i-cloudflare/package.json
159901
159906
  var package_default = {
159902
159907
  name: "@kya-os/mcp-i-cloudflare",
159903
- version: "1.14.3",
159908
+ version: "1.14.5",
159904
159909
  description: "Cloudflare Workers adapter for MCP-I framework",
159905
159910
  main: "dist/index.js",
159906
159911
  types: "dist/index.d.ts",
@@ -166390,6 +166395,22 @@ function approvalFailedPage(message3, status = 410) {
166390
166395
  <p>${escapeHtml2(message3)}</p>
166391
166396
  </main>`), status);
166392
166397
  }
166398
+ var REQUEST_NOT_PREPARED = {
166399
+ title: "Your agent has not prepared this request yet",
166400
+ body: "Before you can approve, your agent must establish the secure key that will receive your permission. No access has been granted.",
166401
+ nextStep: "Return to your chat and ask your agent to finish preparing this authorization request before sharing the approval link.",
166402
+ unsupported: "If the agent's tools cannot sign requests, this flow cannot be completed in that tool. Do not send your password or browser cookies to the agent."
166403
+ };
166404
+ function requestNotPreparedPage(sid) {
166405
+ return htmlResponse(page(REQUEST_NOT_PREPARED.title, `<main class="kya-consent-not-prepared">
166406
+ <h1>${escapeHtml2(REQUEST_NOT_PREPARED.title)}</h1>
166407
+ <p>${escapeHtml2(REQUEST_NOT_PREPARED.body)}</p>
166408
+ <h2>What to do next</h2>
166409
+ <p>${escapeHtml2(REQUEST_NOT_PREPARED.nextStep)}</p>
166410
+ <p>${escapeHtml2(REQUEST_NOT_PREPARED.unsupported)}</p>
166411
+ <p>Once your agent confirms it is ready, <a href="?sid=${encodeURIComponent(sid)}">Reload this page</a>. If the request has expired, ask your agent to start a new request.</p>
166412
+ </main>`), 409);
166413
+ }
166393
166414
  function notFoundJson() {
166394
166415
  return jsonResponse({
166395
166416
  error: "We could not find this authorization request. It may have already completed or been cancelled."
@@ -166731,7 +166752,7 @@ async function handleAnchorConsentGet(c, sid, env2, cfg) {
166731
166752
  }
166732
166753
  const info = await infoResponse.json();
166733
166754
  if (info.nativeHttp && (!info.holderKeyId || info.status === "pending")) {
166734
- return approvalFailedPage("The agent must establish its pickup key before you approve.", 409);
166755
+ return requestNotPreparedPage(sid);
166735
166756
  }
166736
166757
  if (info.nativeHttp && (!cfg.native || info.nativeIssuerDid !== cfg.native.issuerDid))
166737
166758
  return nativeUnavailable();
@@ -166809,7 +166830,7 @@ async function handleAnchorConsentApprove(c, sid, env2, cfg) {
166809
166830
  }
166810
166831
  const info = await infoResponse.json();
166811
166832
  if (info.nativeHttp && (!info.holderKeyId || info.status === "pending")) {
166812
- return approvalFailedJson("The agent must establish its pickup key before you approve.", 409);
166833
+ return approvalFailedJson(`${REQUEST_NOT_PREPARED.title}. ${REQUEST_NOT_PREPARED.body} ${REQUEST_NOT_PREPARED.nextStep} ${REQUEST_NOT_PREPARED.unsupported}`, 409);
166813
166834
  }
166814
166835
  if (info.nativeHttp && (!cfg.native || info.nativeIssuerDid !== cfg.native.issuerDid))
166815
166836
  return nativeUnavailable();
@@ -159646,7 +159646,12 @@ function anchorSnapshot(rec) {
159646
159646
  nativePolicyRevision: rec.nativePolicyRevision
159647
159647
  };
159648
159648
  }
159649
- var pendingBody = () => ({ status: "pending" });
159649
+ var pendingBody = (rec, now2) => ({
159650
+ status: "pending",
159651
+ // This is the remaining authorization-session lifetime, not the future VC's
159652
+ // lifetime. Preserve the frozen legacy response and the original DO deadline.
159653
+ ...rec.nativeHttp ? { expires_in: Math.max(0, Math.floor((rec.expiresAt - now2) / 1e3)) } : {}
159654
+ });
159650
159655
  var pinnedErr = () => ({ error: KYAOS_ERRORS.pickupPinned });
159651
159656
  var invalidSessionErr = () => ({ error: KYAOS_ERRORS.invalidSession });
159652
159657
  var pickupExpiredErr = () => ({ error: KYAOS_ERRORS.pickupExpired });
@@ -159750,7 +159755,7 @@ function reducePoll(rec, holder, now2) {
159750
159755
  }
159751
159756
  return {
159752
159757
  record: { ...working, lastPollAt: now2 },
159753
- response: { status: 202, body: pendingBody() }
159758
+ response: { status: 202, body: pendingBody(working, now2) }
159754
159759
  };
159755
159760
  }
159756
159761
  function reduceApprove(rec, input2, now2) {
@@ -159900,7 +159905,7 @@ async function handlePickupInternal(ctx, request, now2) {
159900
159905
  // ../mcp-i-cloudflare/package.json
159901
159906
  var package_default = {
159902
159907
  name: "@kya-os/mcp-i-cloudflare",
159903
- version: "1.14.3",
159908
+ version: "1.14.5",
159904
159909
  description: "Cloudflare Workers adapter for MCP-I framework",
159905
159910
  main: "dist/index.js",
159906
159911
  types: "dist/index.d.ts",
@@ -166390,6 +166395,22 @@ function approvalFailedPage(message3, status = 410) {
166390
166395
  <p>${escapeHtml2(message3)}</p>
166391
166396
  </main>`), status);
166392
166397
  }
166398
+ var REQUEST_NOT_PREPARED = {
166399
+ title: "Your agent has not prepared this request yet",
166400
+ body: "Before you can approve, your agent must establish the secure key that will receive your permission. No access has been granted.",
166401
+ nextStep: "Return to your chat and ask your agent to finish preparing this authorization request before sharing the approval link.",
166402
+ unsupported: "If the agent's tools cannot sign requests, this flow cannot be completed in that tool. Do not send your password or browser cookies to the agent."
166403
+ };
166404
+ function requestNotPreparedPage(sid) {
166405
+ return htmlResponse(page(REQUEST_NOT_PREPARED.title, `<main class="kya-consent-not-prepared">
166406
+ <h1>${escapeHtml2(REQUEST_NOT_PREPARED.title)}</h1>
166407
+ <p>${escapeHtml2(REQUEST_NOT_PREPARED.body)}</p>
166408
+ <h2>What to do next</h2>
166409
+ <p>${escapeHtml2(REQUEST_NOT_PREPARED.nextStep)}</p>
166410
+ <p>${escapeHtml2(REQUEST_NOT_PREPARED.unsupported)}</p>
166411
+ <p>Once your agent confirms it is ready, <a href="?sid=${encodeURIComponent(sid)}">Reload this page</a>. If the request has expired, ask your agent to start a new request.</p>
166412
+ </main>`), 409);
166413
+ }
166393
166414
  function notFoundJson() {
166394
166415
  return jsonResponse({
166395
166416
  error: "We could not find this authorization request. It may have already completed or been cancelled."
@@ -166731,7 +166752,7 @@ async function handleAnchorConsentGet(c, sid, env2, cfg) {
166731
166752
  }
166732
166753
  const info = await infoResponse.json();
166733
166754
  if (info.nativeHttp && (!info.holderKeyId || info.status === "pending")) {
166734
- return approvalFailedPage("The agent must establish its pickup key before you approve.", 409);
166755
+ return requestNotPreparedPage(sid);
166735
166756
  }
166736
166757
  if (info.nativeHttp && (!cfg.native || info.nativeIssuerDid !== cfg.native.issuerDid))
166737
166758
  return nativeUnavailable();
@@ -166809,7 +166830,7 @@ async function handleAnchorConsentApprove(c, sid, env2, cfg) {
166809
166830
  }
166810
166831
  const info = await infoResponse.json();
166811
166832
  if (info.nativeHttp && (!info.holderKeyId || info.status === "pending")) {
166812
- return approvalFailedJson("The agent must establish its pickup key before you approve.", 409);
166833
+ return approvalFailedJson(`${REQUEST_NOT_PREPARED.title}. ${REQUEST_NOT_PREPARED.body} ${REQUEST_NOT_PREPARED.nextStep} ${REQUEST_NOT_PREPARED.unsupported}`, 409);
166813
166834
  }
166814
166835
  if (info.nativeHttp && (!cfg.native || info.nativeIssuerDid !== cfg.native.issuerDid))
166815
166836
  return nativeUnavailable();
@@ -159646,7 +159646,12 @@ function anchorSnapshot(rec) {
159646
159646
  nativePolicyRevision: rec.nativePolicyRevision
159647
159647
  };
159648
159648
  }
159649
- var pendingBody = () => ({ status: "pending" });
159649
+ var pendingBody = (rec, now2) => ({
159650
+ status: "pending",
159651
+ // This is the remaining authorization-session lifetime, not the future VC's
159652
+ // lifetime. Preserve the frozen legacy response and the original DO deadline.
159653
+ ...rec.nativeHttp ? { expires_in: Math.max(0, Math.floor((rec.expiresAt - now2) / 1e3)) } : {}
159654
+ });
159650
159655
  var pinnedErr = () => ({ error: KYAOS_ERRORS.pickupPinned });
159651
159656
  var invalidSessionErr = () => ({ error: KYAOS_ERRORS.invalidSession });
159652
159657
  var pickupExpiredErr = () => ({ error: KYAOS_ERRORS.pickupExpired });
@@ -159750,7 +159755,7 @@ function reducePoll(rec, holder, now2) {
159750
159755
  }
159751
159756
  return {
159752
159757
  record: { ...working, lastPollAt: now2 },
159753
- response: { status: 202, body: pendingBody() }
159758
+ response: { status: 202, body: pendingBody(working, now2) }
159754
159759
  };
159755
159760
  }
159756
159761
  function reduceApprove(rec, input2, now2) {
@@ -159900,7 +159905,7 @@ async function handlePickupInternal(ctx, request, now2) {
159900
159905
  // ../mcp-i-cloudflare/package.json
159901
159906
  var package_default = {
159902
159907
  name: "@kya-os/mcp-i-cloudflare",
159903
- version: "1.14.3",
159908
+ version: "1.14.5",
159904
159909
  description: "Cloudflare Workers adapter for MCP-I framework",
159905
159910
  main: "dist/index.js",
159906
159911
  types: "dist/index.d.ts",
@@ -166390,6 +166395,22 @@ function approvalFailedPage(message3, status = 410) {
166390
166395
  <p>${escapeHtml2(message3)}</p>
166391
166396
  </main>`), status);
166392
166397
  }
166398
+ var REQUEST_NOT_PREPARED = {
166399
+ title: "Your agent has not prepared this request yet",
166400
+ body: "Before you can approve, your agent must establish the secure key that will receive your permission. No access has been granted.",
166401
+ nextStep: "Return to your chat and ask your agent to finish preparing this authorization request before sharing the approval link.",
166402
+ unsupported: "If the agent's tools cannot sign requests, this flow cannot be completed in that tool. Do not send your password or browser cookies to the agent."
166403
+ };
166404
+ function requestNotPreparedPage(sid) {
166405
+ return htmlResponse(page(REQUEST_NOT_PREPARED.title, `<main class="kya-consent-not-prepared">
166406
+ <h1>${escapeHtml2(REQUEST_NOT_PREPARED.title)}</h1>
166407
+ <p>${escapeHtml2(REQUEST_NOT_PREPARED.body)}</p>
166408
+ <h2>What to do next</h2>
166409
+ <p>${escapeHtml2(REQUEST_NOT_PREPARED.nextStep)}</p>
166410
+ <p>${escapeHtml2(REQUEST_NOT_PREPARED.unsupported)}</p>
166411
+ <p>Once your agent confirms it is ready, <a href="?sid=${encodeURIComponent(sid)}">Reload this page</a>. If the request has expired, ask your agent to start a new request.</p>
166412
+ </main>`), 409);
166413
+ }
166393
166414
  function notFoundJson() {
166394
166415
  return jsonResponse({
166395
166416
  error: "We could not find this authorization request. It may have already completed or been cancelled."
@@ -166731,7 +166752,7 @@ async function handleAnchorConsentGet(c, sid, env2, cfg) {
166731
166752
  }
166732
166753
  const info = await infoResponse.json();
166733
166754
  if (info.nativeHttp && (!info.holderKeyId || info.status === "pending")) {
166734
- return approvalFailedPage("The agent must establish its pickup key before you approve.", 409);
166755
+ return requestNotPreparedPage(sid);
166735
166756
  }
166736
166757
  if (info.nativeHttp && (!cfg.native || info.nativeIssuerDid !== cfg.native.issuerDid))
166737
166758
  return nativeUnavailable();
@@ -166809,7 +166830,7 @@ async function handleAnchorConsentApprove(c, sid, env2, cfg) {
166809
166830
  }
166810
166831
  const info = await infoResponse.json();
166811
166832
  if (info.nativeHttp && (!info.holderKeyId || info.status === "pending")) {
166812
- return approvalFailedJson("The agent must establish its pickup key before you approve.", 409);
166833
+ return approvalFailedJson(`${REQUEST_NOT_PREPARED.title}. ${REQUEST_NOT_PREPARED.body} ${REQUEST_NOT_PREPARED.nextStep} ${REQUEST_NOT_PREPARED.unsupported}`, 409);
166813
166834
  }
166814
166835
  if (info.nativeHttp && (!cfg.native || info.nativeIssuerDid !== cfg.native.issuerDid))
166815
166836
  return nativeUnavailable();
@@ -1,29 +1,29 @@
1
1
  {
2
- "version": "1.11.3",
3
- "frameworkVersion": "1.14.3",
2
+ "version": "1.11.4",
3
+ "frameworkVersion": "1.14.5",
4
4
  "doClassName": "MCPIAgent",
5
5
  "auditDoClassName": "AuditProducer",
6
- "buildDate": "2026-09-16T00:51:29.426Z",
6
+ "buildDate": "2026-09-17T17:15:27.894Z",
7
7
  "templates": {
8
8
  "blank": {
9
9
  "file": "blank.js",
10
- "size": 8170758,
11
- "hash": "sha256:72e778e39a3371b5c554e40416412040b0d73ad621aff3f61a7576475ebd7b5c"
10
+ "size": 8172141,
11
+ "hash": "sha256:964b549d9b27cc744b75232f5315c8a2a88edd4e34da4e8d6cede681be910191"
12
12
  },
13
13
  "hardware-world": {
14
14
  "file": "hardware-world.js",
15
- "size": 8183177,
16
- "hash": "sha256:1edd8330eddd7af048c972cdc00a76c7c58a01b30d9a740648b74e7710a6635b"
15
+ "size": 8184560,
16
+ "hash": "sha256:613ed3ca8a5936fa063137a257fd95183b8db7fbb28f557909fd1976c5187e1b"
17
17
  },
18
18
  "ecommerce": {
19
19
  "file": "ecommerce.js",
20
- "size": 8172452,
21
- "hash": "sha256:09a58de753d02f25f3a9cb59edf9f2696f876352beebf4cc4d74f04c20ac4527"
20
+ "size": 8173835,
21
+ "hash": "sha256:e1de25fb7a73eb3d73b0d9d1c6dff89d82605b263cfe01d5ccc245238a354b28"
22
22
  },
23
23
  "mix-station": {
24
24
  "file": "mix-station.js",
25
- "size": 8185802,
26
- "hash": "sha256:0c29ba4e04375e595401be3916cc35d49400861287f4c8c4ccfa69c999612396"
25
+ "size": 8187185,
26
+ "hash": "sha256:b5acc100ef55c725c25eff966d5739203cb112ecded3c9430c6d1acf366136b6"
27
27
  }
28
28
  }
29
29
  }
@@ -159646,7 +159646,12 @@ function anchorSnapshot(rec) {
159646
159646
  nativePolicyRevision: rec.nativePolicyRevision
159647
159647
  };
159648
159648
  }
159649
- var pendingBody = () => ({ status: "pending" });
159649
+ var pendingBody = (rec, now2) => ({
159650
+ status: "pending",
159651
+ // This is the remaining authorization-session lifetime, not the future VC's
159652
+ // lifetime. Preserve the frozen legacy response and the original DO deadline.
159653
+ ...rec.nativeHttp ? { expires_in: Math.max(0, Math.floor((rec.expiresAt - now2) / 1e3)) } : {}
159654
+ });
159650
159655
  var pinnedErr = () => ({ error: KYAOS_ERRORS.pickupPinned });
159651
159656
  var invalidSessionErr = () => ({ error: KYAOS_ERRORS.invalidSession });
159652
159657
  var pickupExpiredErr = () => ({ error: KYAOS_ERRORS.pickupExpired });
@@ -159750,7 +159755,7 @@ function reducePoll(rec, holder, now2) {
159750
159755
  }
159751
159756
  return {
159752
159757
  record: { ...working, lastPollAt: now2 },
159753
- response: { status: 202, body: pendingBody() }
159758
+ response: { status: 202, body: pendingBody(working, now2) }
159754
159759
  };
159755
159760
  }
159756
159761
  function reduceApprove(rec, input2, now2) {
@@ -159900,7 +159905,7 @@ async function handlePickupInternal(ctx, request, now2) {
159900
159905
  // ../mcp-i-cloudflare/package.json
159901
159906
  var package_default = {
159902
159907
  name: "@kya-os/mcp-i-cloudflare",
159903
- version: "1.14.3",
159908
+ version: "1.14.5",
159904
159909
  description: "Cloudflare Workers adapter for MCP-I framework",
159905
159910
  main: "dist/index.js",
159906
159911
  types: "dist/index.d.ts",
@@ -166390,6 +166395,22 @@ function approvalFailedPage(message3, status = 410) {
166390
166395
  <p>${escapeHtml2(message3)}</p>
166391
166396
  </main>`), status);
166392
166397
  }
166398
+ var REQUEST_NOT_PREPARED = {
166399
+ title: "Your agent has not prepared this request yet",
166400
+ body: "Before you can approve, your agent must establish the secure key that will receive your permission. No access has been granted.",
166401
+ nextStep: "Return to your chat and ask your agent to finish preparing this authorization request before sharing the approval link.",
166402
+ unsupported: "If the agent's tools cannot sign requests, this flow cannot be completed in that tool. Do not send your password or browser cookies to the agent."
166403
+ };
166404
+ function requestNotPreparedPage(sid) {
166405
+ return htmlResponse(page(REQUEST_NOT_PREPARED.title, `<main class="kya-consent-not-prepared">
166406
+ <h1>${escapeHtml2(REQUEST_NOT_PREPARED.title)}</h1>
166407
+ <p>${escapeHtml2(REQUEST_NOT_PREPARED.body)}</p>
166408
+ <h2>What to do next</h2>
166409
+ <p>${escapeHtml2(REQUEST_NOT_PREPARED.nextStep)}</p>
166410
+ <p>${escapeHtml2(REQUEST_NOT_PREPARED.unsupported)}</p>
166411
+ <p>Once your agent confirms it is ready, <a href="?sid=${encodeURIComponent(sid)}">Reload this page</a>. If the request has expired, ask your agent to start a new request.</p>
166412
+ </main>`), 409);
166413
+ }
166393
166414
  function notFoundJson() {
166394
166415
  return jsonResponse({
166395
166416
  error: "We could not find this authorization request. It may have already completed or been cancelled."
@@ -166731,7 +166752,7 @@ async function handleAnchorConsentGet(c, sid, env2, cfg) {
166731
166752
  }
166732
166753
  const info = await infoResponse.json();
166733
166754
  if (info.nativeHttp && (!info.holderKeyId || info.status === "pending")) {
166734
- return approvalFailedPage("The agent must establish its pickup key before you approve.", 409);
166755
+ return requestNotPreparedPage(sid);
166735
166756
  }
166736
166757
  if (info.nativeHttp && (!cfg.native || info.nativeIssuerDid !== cfg.native.issuerDid))
166737
166758
  return nativeUnavailable();
@@ -166809,7 +166830,7 @@ async function handleAnchorConsentApprove(c, sid, env2, cfg) {
166809
166830
  }
166810
166831
  const info = await infoResponse.json();
166811
166832
  if (info.nativeHttp && (!info.holderKeyId || info.status === "pending")) {
166812
- return approvalFailedJson("The agent must establish its pickup key before you approve.", 409);
166833
+ return approvalFailedJson(`${REQUEST_NOT_PREPARED.title}. ${REQUEST_NOT_PREPARED.body} ${REQUEST_NOT_PREPARED.nextStep} ${REQUEST_NOT_PREPARED.unsupported}`, 409);
166813
166834
  }
166814
166835
  if (info.nativeHttp && (!cfg.native || info.nativeIssuerDid !== cfg.native.issuerDid))
166815
166836
  return nativeUnavailable();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kya-os/create-mcpi-app",
3
- "version": "1.11.3",
3
+ "version": "1.11.4",
4
4
  "description": "Scaffold a new MCP-I application",
5
5
  "type": "module",
6
6
  "main": "./dist/helpers/index.js",
@@ -51,7 +51,7 @@
51
51
  "@kya-os/cli-effects": "^1.0.19",
52
52
  "@kya-os/contracts": "^1.12.1",
53
53
  "@kya-os/mcp-i": "^1.12.2",
54
- "@kya-os/mcp-i-cloudflare": "^1.14.3",
54
+ "@kya-os/mcp-i-cloudflare": "^1.14.5",
55
55
  "base-x": "^5.0.0",
56
56
  "chalk": "^4.1.2",
57
57
  "commander": "^12.1.0",