@akanjs/cli 3.0.0-beta.10 → 3.0.0-beta.11

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 (58) hide show
  1. package/.build-stamp +1 -1
  2. package/TunnelShare-sbsaggmb.js +9 -0
  3. package/{abstractCompactor-gmkc0z8j.js → abstractCompactor-bqh31fk5.js} +2 -2
  4. package/{agent.command-0q17pnrs.js → agent.command-7357vxd8.js} +5 -5
  5. package/{application.command-18y0s485.js → application.command-pc8mdn3w.js} +10 -10
  6. package/{applicationBuildRunner-kxwbssgn.js → applicationBuildRunner-4f1wrba0.js} +2 -2
  7. package/{applicationReleasePackager-4yasxwv9.js → applicationReleasePackager-jkjmy5ee.js} +1 -1
  8. package/buildBatch.proc.js +2 -2
  9. package/{capacitorApp-36rbr858.js → capacitorApp-hqvsrec4.js} +2 -2
  10. package/{cloud.command-av97ndh6.js → cloud.command-cawrd5nq.js} +10 -10
  11. package/cloud.script-1bmptvw0.js +20 -0
  12. package/commandManifest.json +1 -1
  13. package/{context.command-5v37ef3n.js → context.command-982b6kdp.js} +14 -14
  14. package/{devTui-m1atgkc9.js → devTui-hmteztv3.js} +4 -24
  15. package/{devTuiView-0hc2emhe.js → devTuiView-40jvjnyz.js} +1 -1
  16. package/{guideline.command-4pz9g1rt.js → guideline.command-jn0vwszx.js} +4 -4
  17. package/guidelines/agentRule/agentRule.instruction.md +41 -0
  18. package/incrementalBuilder.proc.js +1 -1
  19. package/{index-ktb5njgy.js → index-15r9a10e.js} +2 -2
  20. package/{index-vxtad5bd.js → index-1nwxbr2y.js} +2 -2
  21. package/{index-y6n8nmny.js → index-3pvkjza8.js} +10 -10
  22. package/{index-2tv3fdx4.js → index-5nyznra1.js} +1 -0
  23. package/{index-wt7qrtd4.js → index-7f4dsf9v.js} +1 -1
  24. package/{index-ffvk10zz.js → index-8pkvrcv1.js} +3 -3
  25. package/{index-rtxxan88.js → index-8tfmh0v6.js} +5 -5
  26. package/{index-2xp0kfkt.js → index-ay8wj00x.js} +7 -7
  27. package/{index-0g7r8xz3.js → index-b3ae16mg.js} +1 -1
  28. package/{index-m0xccmmm.js → index-bw2marpf.js} +9 -0
  29. package/{index-a17x49vg.js → index-ceph7zqj.js} +3 -3
  30. package/{index-04bk599g.js → index-em4swemt.js} +3 -3
  31. package/{index-5ystnsd5.js → index-fr2x3qvv.js} +5 -5
  32. package/index-jcekapz4.js +49 -0
  33. package/{index-gyd220p2.js → index-jwjaf9fy.js} +1 -1
  34. package/{index-d43r08tf.js → index-kbsach1y.js} +4 -4
  35. package/index-p6pbz9n5.js +25 -0
  36. package/{index-sj5vxr8f.js → index-r8bd61d9.js} +46 -11
  37. package/{index-k2j1hc4r.js → index-s3fvrydw.js} +3 -3
  38. package/{index-vyvre9en.js → index-sh88vtye.js} +1 -1
  39. package/{index-9077wzd2.js → index-t8gvwcrx.js} +2 -2
  40. package/{index-a64esmtb.js → index-vrwdx0zx.js} +1 -1
  41. package/{index-te54x9zm.js → index-yc1keaer.js} +2 -2
  42. package/{index-j9yhg404.js → index-ys7dvdb3.js} +1 -1
  43. package/index.js +20 -19
  44. package/{library.command-qzzbj6d8.js → library.command-1f9h2ex6.js} +3 -3
  45. package/{localRegistry.command-vyrgg4xw.js → localRegistry.command-rx758ajg.js} +9 -9
  46. package/{module.command-rq5hq3ax.js → module.command-c2eve036.js} +7 -7
  47. package/{package.command-d9hd6v9n.js → package.command-y2rh4np7.js} +3 -3
  48. package/package.json +2 -2
  49. package/{page.command-126d56te.js → page.command-e5h29fyt.js} +3 -3
  50. package/{primitive.command-taxd1538.js → primitive.command-c44f7z1s.js} +8 -8
  51. package/{quality.command-6gsna0a3.js → quality.command-5evdd263.js} +2 -2
  52. package/{repair.command-tq2dgy72.js → repair.command-c2amvt74.js} +5 -5
  53. package/{scalar.command-3bcmrrkv.js → scalar.command-xyzerygj.js} +6 -6
  54. package/{subspace.command-eddzqpx3.js → subspace.command-ebfwzypw.js} +5 -5
  55. package/tunnel.command-v6a7at16.js +130 -0
  56. package/{workflow.command-gtdnzvbz.js → workflow.command-t174m6sy.js} +11 -11
  57. package/{workspace.command-06wvstgr.js → workspace.command-bg3eveth.js} +21 -21
  58. package/cloud.script-cm11xjdz.js +0 -20
package/.build-stamp CHANGED
@@ -1 +1 @@
1
- 248a5d65f363fd5a27c6caa9355adca9158d40d43304e82483ed913ef597f0ac
1
+ 14dcf08e297228b84d390560fb0b666562b61989362641c9027868a93d4c503a
@@ -0,0 +1,9 @@
1
+ // @bun
2
+ import {
3
+ TunnelShare2
4
+ } from "./index-jcekapz4.js";
5
+ import"./index-bw2marpf.js";
6
+ import"./index-q0y2jq9j.js";
7
+ export {
8
+ TunnelShare2 as TunnelShare
9
+ };
@@ -1,9 +1,9 @@
1
1
  // @bun
2
2
  import"./index-q0y2jq9j.js";
3
- import"./index-m0xccmmm.js";
3
+ import"./index-bw2marpf.js";
4
4
  import {
5
5
  AiSession
6
- } from "./index-te54x9zm.js";
6
+ } from "./index-yc1keaer.js";
7
7
  import {
8
8
  AbstractDoc
9
9
  } from "./index-meh558jy.js";
@@ -2,17 +2,17 @@
2
2
  import {
3
3
  Workspace,
4
4
  command
5
- } from "./index-0g7r8xz3.js";
5
+ } from "./index-b3ae16mg.js";
6
6
  import"./index-q0y2jq9j.js";
7
- import"./index-2tv3fdx4.js";
7
+ import"./index-5nyznra1.js";
8
8
  import"./index-6wwzs1bc.js";
9
9
  import"./index-by5gpp8x.js";
10
- import"./index-gyd220p2.js";
11
- import"./index-ktb5njgy.js";
10
+ import"./index-jwjaf9fy.js";
11
+ import"./index-15r9a10e.js";
12
12
  import"./index-h7yw2z9n.js";
13
13
  import {
14
14
  AgentScript
15
- } from "./index-k2j1hc4r.js";
15
+ } from "./index-s3fvrydw.js";
16
16
 
17
17
  // pkgs/@akanjs/cli/agent/agent.command.ts
18
18
  class AgentCommand extends command("agent", [AgentScript], ({ public: target }) => ({
@@ -6,22 +6,22 @@ import {
6
6
  Exec,
7
7
  Workspace,
8
8
  command
9
- } from "./index-0g7r8xz3.js";
9
+ } from "./index-b3ae16mg.js";
10
10
  import"./index-q0y2jq9j.js";
11
- import"./index-2tv3fdx4.js";
11
+ import"./index-5nyznra1.js";
12
12
  import"./index-6wwzs1bc.js";
13
13
  import {
14
14
  ApplicationScript
15
- } from "./index-sj5vxr8f.js";
16
- import"./index-vxtad5bd.js";
15
+ } from "./index-r8bd61d9.js";
16
+ import"./index-1nwxbr2y.js";
17
17
  import"./index-hwkygn9s.js";
18
- import {
19
- AbstractDoc
20
- } from "./index-meh558jy.js";
21
- import"./index-j9yhg404.js";
18
+ import"./index-ys7dvdb3.js";
22
19
  import {
23
20
  getMobileTargetChoices
24
21
  } from "./index-47pj3aee.js";
22
+ import {
23
+ AbstractDoc
24
+ } from "./index-meh558jy.js";
25
25
 
26
26
  // pkgs/@akanjs/cli/application/application.command.ts
27
27
  import { select } from "@inquirer/prompts";
@@ -106,8 +106,8 @@ class ApplicationCommand extends command("application", [ApplicationScript], ({
106
106
  start: target({ short: true, desc: "Start development server(s) (frontend SSR + backend)" }).with(Apps).option("plain", Boolean, { desc: "print prefixed lines instead of the full-screen view", default: false }).option("kill", Boolean, { flag: "k", desc: "free the dev ports first, whoever is holding them", default: false }).option("concurrency", Number, {
107
107
  desc: "apps to boot at a time (default: what this machine's memory and cores allow)",
108
108
  nullable: true
109
- }).option("dbup", Boolean, { desc: "start the local database first", default: true }).option("open", Boolean, { desc: "open web browser?", default: false }).option("write", Boolean, { desc: "write code generation", default: true }).exec(async function(apps, plain, kill, concurrency, dbup, open, write) {
110
- await this.applicationScript.start(apps, { plain, kill, concurrency, dbup, open, write });
109
+ }).option("dbup", Boolean, { desc: "start the local database first", default: true }).option("open", Boolean, { desc: "open web browser?", default: false }).option("share", Boolean, { desc: "also share each app on a public URL through an akan tunnel", default: false }).option("write", Boolean, { desc: "write code generation", default: true }).exec(async function(apps, plain, kill, concurrency, dbup, open, share, write) {
110
+ await this.applicationScript.start(apps, { plain, kill, concurrency, dbup, open, share, write });
111
111
  }),
112
112
  startIos: target({ short: true, desc: "Start iOS app in simulator or device" }).with(App).option("target", String, mobileTargetOption).option("env", String, {
113
113
  enum: ["local", "debug", "develop", "main"],
@@ -1,14 +1,14 @@
1
1
  // @bun
2
2
  import {
3
3
  Spinner
4
- } from "./index-2tv3fdx4.js";
4
+ } from "./index-5nyznra1.js";
5
5
  import {
6
6
  AllRoutesBuilder,
7
7
  CsrArtifactBuilder,
8
8
  FontPruner,
9
9
  precompressArtifacts,
10
10
  SsrBaseArtifactBuilder
11
- } from "./index-a64esmtb.js";
11
+ } from "./index-vrwdx0zx.js";
12
12
  import"./index-w8kmx1b6.js";
13
13
  import"./index-q0y2jq9j.js";
14
14
  import"./index-hwkygn9s.js";
@@ -4,7 +4,7 @@ import {
4
4
  } from "./index-q0y2jq9j.js";
5
5
  import {
6
6
  Spinner
7
- } from "./index-2tv3fdx4.js";
7
+ } from "./index-5nyznra1.js";
8
8
 
9
9
  // pkgs/@akanjs/devkit/applicationReleasePackager.ts
10
10
  import { cp, mkdir, rm } from "fs/promises";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  WorkspaceExecutor,
4
4
  AppExecutor
5
- } from "./index-2tv3fdx4.js";
5
+ } from "./index-5nyznra1.js";
6
6
  import"./index-q0y2jq9j.js";
7
7
  import"./index-6wwzs1bc.js";
8
8
  import {
@@ -11,7 +11,7 @@ import {
11
11
  CsrArtifactBuilder,
12
12
  FontOptimizer,
13
13
  SsrBaseArtifactBuilder
14
- } from "./index-a64esmtb.js";
14
+ } from "./index-vrwdx0zx.js";
15
15
  import"./index-w8kmx1b6.js";
16
16
  import"./index-hwkygn9s.js";
17
17
  import"./index-n68jx79w.js";
@@ -2,8 +2,8 @@
2
2
  import {
3
3
  isPlaceholderAppId2,
4
4
  CapacitorApp2
5
- } from "./index-wt7qrtd4.js";
6
- import"./index-2tv3fdx4.js";
5
+ } from "./index-7f4dsf9v.js";
6
+ import"./index-5nyznra1.js";
7
7
  import"./index-6wwzs1bc.js";
8
8
  import"./index-q0y2jq9j.js";
9
9
  export {
@@ -2,24 +2,24 @@
2
2
  import"./index-q0y2jq9j.js";
3
3
  import {
4
4
  GlobalConfig
5
- } from "./index-m0xccmmm.js";
5
+ } from "./index-bw2marpf.js";
6
6
  import {
7
7
  Workspace,
8
8
  command
9
- } from "./index-0g7r8xz3.js";
10
- import"./index-2tv3fdx4.js";
9
+ } from "./index-b3ae16mg.js";
10
+ import"./index-5nyznra1.js";
11
11
  import"./index-6wwzs1bc.js";
12
- import"./index-te54x9zm.js";
13
- import"./index-sj5vxr8f.js";
14
- import"./index-vxtad5bd.js";
12
+ import"./index-yc1keaer.js";
13
+ import"./index-r8bd61d9.js";
14
+ import"./index-1nwxbr2y.js";
15
15
  import"./index-hwkygn9s.js";
16
16
  import"./index-kcxmv48c.js";
17
- import"./index-9077wzd2.js";
18
- import"./index-rtxxan88.js";
17
+ import"./index-t8gvwcrx.js";
18
+ import"./index-8tfmh0v6.js";
19
19
  import {
20
20
  CloudScript2
21
- } from "./index-2xp0kfkt.js";
22
- import"./index-j9yhg404.js";
21
+ } from "./index-ay8wj00x.js";
22
+ import"./index-ys7dvdb3.js";
23
23
 
24
24
  // pkgs/@akanjs/cli/cloud/cloud.command.ts
25
25
  var localRegistryUrl = () => process.env.AKAN_NPM_REGISTRY ?? "http://127.0.0.1:4873";
@@ -0,0 +1,20 @@
1
+ // @bun
2
+ import {
3
+ CloudScript2
4
+ } from "./index-ay8wj00x.js";
5
+ import"./index-8tfmh0v6.js";
6
+ import"./index-r8bd61d9.js";
7
+ import"./index-ys7dvdb3.js";
8
+ import"./index-1nwxbr2y.js";
9
+ import"./index-t8gvwcrx.js";
10
+ import"./index-yc1keaer.js";
11
+ import"./index-bw2marpf.js";
12
+ import"./index-b3ae16mg.js";
13
+ import"./index-hwkygn9s.js";
14
+ import"./index-5nyznra1.js";
15
+ import"./index-6wwzs1bc.js";
16
+ import"./index-kcxmv48c.js";
17
+ import"./index-q0y2jq9j.js";
18
+ export {
19
+ CloudScript2 as CloudScript
20
+ };
@@ -1 +1 @@
1
- {"byCommand":{"create-workspace":"workspace","generate-agent-rules":"workspace","lint":"workspace","lint-all":"workspace","sync-all":"workspace","init":"workspace","agent":"agent","create-application":"application","remove-application":"application","plan-slice":"application","sync":"application","compact":"application","script":"application","console":"application","logs":"application","build":"application","b":"application","typecheck":"application","t":"application","test":"application","build-ios":"application","bi":"application","build-android":"application","ba":"application","start":"application","s":"application","start-ios":"application","si":"application","start-android":"application","sa":"application","release-ios":"application","release-android":"application","release-source":"application","codepush":"application","dbup":"application","dbdown":"application","configure-app":"application","create-library":"library","remove-library":"library","sync-library":"library","library-status":"library","install-library":"library","start-registry":"localRegistry","reset-registry":"localRegistry","smoke-registry":"localRegistry","version":"package","create-package":"package","remove-package":"package","sync-package":"package","build-package":"package","verify-dist-package":"package","verify-akan-publish-packages":"package","create-module":"module","remove-module":"module","create-service":"module","create-view":"module","create-unit":"module","create-template":"module","create-crud-page":"page","context":"context","doctor":"context","mcp-install":"context","mcp":"context","mcp-call":"context","login":"cloud","logout":"cloud","set-llm":"cloud","reset-llm":"cloud","ask":"cloud","deploy-akan":"cloud","update":"cloud","download-env":"cloud","upload-env":"cloud","subspace":"subspace","guideline":"guideline","generate-instruction":"guideline","update-instruction":"guideline","generate-document":"guideline","reapply-instruction":"guideline","create-scalar":"scalar","remove-scalar":"scalar","create-ui":"primitive","add-field":"primitive","add-enum-field":"primitive","quality":"quality","repair":"repair","workflow":"workflow"}}
1
+ {"byCommand":{"create-workspace":"workspace","generate-agent-rules":"workspace","lint":"workspace","lint-all":"workspace","sync-all":"workspace","init":"workspace","agent":"agent","create-application":"application","remove-application":"application","plan-slice":"application","sync":"application","compact":"application","script":"application","console":"application","logs":"application","build":"application","b":"application","typecheck":"application","t":"application","test":"application","build-ios":"application","bi":"application","build-android":"application","ba":"application","start":"application","s":"application","start-ios":"application","si":"application","start-android":"application","sa":"application","release-ios":"application","release-android":"application","release-source":"application","codepush":"application","dbup":"application","dbdown":"application","configure-app":"application","create-library":"library","remove-library":"library","sync-library":"library","library-status":"library","install-library":"library","start-registry":"localRegistry","reset-registry":"localRegistry","smoke-registry":"localRegistry","version":"package","create-package":"package","remove-package":"package","sync-package":"package","build-package":"package","verify-dist-package":"package","verify-akan-publish-packages":"package","create-module":"module","remove-module":"module","create-service":"module","create-view":"module","create-unit":"module","create-template":"module","create-crud-page":"page","context":"context","doctor":"context","mcp-install":"context","mcp":"context","mcp-call":"context","login":"cloud","logout":"cloud","set-llm":"cloud","reset-llm":"cloud","ask":"cloud","deploy-akan":"cloud","update":"cloud","download-env":"cloud","upload-env":"cloud","subspace":"subspace","guideline":"guideline","generate-instruction":"guideline","update-instruction":"guideline","generate-document":"guideline","reapply-instruction":"guideline","create-scalar":"scalar","remove-scalar":"scalar","create-ui":"primitive","add-field":"primitive","add-enum-field":"primitive","quality":"quality","repair":"repair","workflow":"workflow","tunnel":"tunnel"}}
@@ -2,26 +2,26 @@
2
2
  import {
3
3
  Workspace,
4
4
  command
5
- } from "./index-0g7r8xz3.js";
5
+ } from "./index-b3ae16mg.js";
6
6
  import"./index-q0y2jq9j.js";
7
- import"./index-2tv3fdx4.js";
7
+ import"./index-5nyznra1.js";
8
8
  import"./index-6wwzs1bc.js";
9
9
  import"./index-by5gpp8x.js";
10
- import"./index-gyd220p2.js";
11
- import"./index-ktb5njgy.js";
10
+ import"./index-jwjaf9fy.js";
11
+ import"./index-15r9a10e.js";
12
12
  import {
13
13
  ContextScript
14
- } from "./index-y6n8nmny.js";
15
- import"./index-wt7qrtd4.js";
14
+ } from "./index-3pvkjza8.js";
15
+ import"./index-7f4dsf9v.js";
16
16
  import"./index-h7yw2z9n.js";
17
- import"./index-04bk599g.js";
18
- import"./index-ffvk10zz.js";
19
- import"./index-m0xccmmm.js";
20
- import"./index-te54x9zm.js";
21
- import"./index-5ystnsd5.js";
22
- import"./index-vyvre9en.js";
23
- import"./index-d43r08tf.js";
24
- import"./index-a17x49vg.js";
17
+ import"./index-em4swemt.js";
18
+ import"./index-8pkvrcv1.js";
19
+ import"./index-bw2marpf.js";
20
+ import"./index-yc1keaer.js";
21
+ import"./index-fr2x3qvv.js";
22
+ import"./index-sh88vtye.js";
23
+ import"./index-kbsach1y.js";
24
+ import"./index-ceph7zqj.js";
25
25
 
26
26
  // pkgs/@akanjs/cli/context/context.command.ts
27
27
  class ContextCommand extends command("context", [ContextScript], ({ public: target }) => ({
@@ -4,34 +4,14 @@ import {
4
4
  plainTextOf,
5
5
  HOST_SOURCE,
6
6
  DevLogBuffer
7
- } from "./index-sj5vxr8f.js";
7
+ } from "./index-r8bd61d9.js";
8
+ import {
9
+ writeClipboard
10
+ } from "./index-p6pbz9n5.js";
8
11
 
9
12
  // pkgs/@akanjs/cli/application/devTui.tsx
10
13
  import { render } from "ink";
11
14
 
12
- // pkgs/@akanjs/cli/clipboard.ts
13
- var clipboardCommands = () => {
14
- if (process.platform === "darwin")
15
- return [["pbcopy"]];
16
- if (process.platform === "win32")
17
- return [["clip"]];
18
- return [["wl-copy"], ["xclip", "-selection", "clipboard"], ["xsel", "--clipboard", "--input"]];
19
- };
20
- var writeClipboard = async (text) => {
21
- for (const command of clipboardCommands()) {
22
- try {
23
- const proc = Bun.spawn(command, {
24
- stdin: new TextEncoder().encode(text),
25
- stdout: "ignore",
26
- stderr: "ignore"
27
- });
28
- if (await proc.exited === 0)
29
- return true;
30
- } catch {}
31
- }
32
- return false;
33
- };
34
-
35
15
  // pkgs/@akanjs/cli/ui/DevTuiApp.tsx
36
16
  import { Box, Text, useInput } from "ink";
37
17
  import { useEffect, useState } from "react";
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  // pkgs/@akanjs/cli/application/devTuiView.ts
3
3
  var createDevTuiView = async (supervisor) => {
4
- const { DevTui } = await import("./devTui-m1atgkc9.js");
4
+ const { DevTui } = await import("./devTui-hmteztv3.js");
5
5
  return new DevTui(supervisor);
6
6
  };
7
7
  export {
@@ -4,21 +4,21 @@ import {
4
4
  runner,
5
5
  script,
6
6
  command
7
- } from "./index-0g7r8xz3.js";
7
+ } from "./index-b3ae16mg.js";
8
8
  import {
9
9
  FileSys
10
10
  } from "./index-q0y2jq9j.js";
11
- import"./index-2tv3fdx4.js";
11
+ import"./index-5nyznra1.js";
12
12
  import {
13
13
  getDirname2
14
14
  } from "./index-6wwzs1bc.js";
15
15
  import {
16
16
  Prompter
17
17
  } from "./index-h7yw2z9n.js";
18
- import"./index-m0xccmmm.js";
18
+ import"./index-bw2marpf.js";
19
19
  import {
20
20
  AiSession
21
- } from "./index-te54x9zm.js";
21
+ } from "./index-yc1keaer.js";
22
22
 
23
23
  // pkgs/@akanjs/cli/guideline/guideline.script.ts
24
24
  import { Logger } from "akanjs/common";
@@ -675,3 +675,44 @@ apps and libs never import it directly (`no-import-external-library`) — everyt
675
675
  error result rather than a silent empty answer, and the settled exchange renders as question-and-answer instead
676
676
  of a tool row. **Never re-implement it per screen** — a `st.tool("askAboutX")` that opens a modal is the same
677
677
  thing with a worse transcript — and a hook tool named `askUser` shadows it like any other built-in.
678
+
679
+ ## What The Page Draws
680
+ - **The page shows the agent's work, not just the transcript.** A chat panel is closed as often as it is open, and
681
+ a form that fills itself or a tab that switches on its own is a change the user watches happen with nothing
682
+ anywhere attributing it. So **the control a call was published from is ringed** where it stands, scrolled to
683
+ first when it is off screen, and **a pointer travels to it and presses it** — both on by default, and both
684
+ driven from the tool call itself rather than from a store action, which cannot tell the agent's write from the
685
+ user's.
686
+ - **It costs an app nothing, for the same reason `data-akan-action` does.** `onChange={st.do.setTitleOnTask}` by
687
+ reference is what annotates the control, and the annotation is what makes it findable — so the fields and verbs
688
+ that matter light up with no code. An inline arrow publishes no tool, carries no annotation, and therefore
689
+ draws nothing: one wrapper silently costs three things at once.
690
+ - **For a control the framework did not render, spread `agentAttrs`** from `akanjs/ui`:
691
+ `<button {...agentAttrs(run)} onClick={run}>`, where `run` is what `st.tool(…).exec(…)` returned. It reads the
692
+ name off the callable, so there is nothing to keep in sync and no `ref` to thread — and it earns the same E2E
693
+ selector and accessibility name an `akanjs/ui` control has. Never hand-write `data-akan-*`.
694
+ - **Nothing is ever waited on.** The call starts the moment the effect is handed its event; a ring that lands a
695
+ frame later costs the turn nothing, and an animation that held a call would make the agent slower for a
696
+ decoration. A batch past four calls stops scrolling and keeps ringing — eight scrolls across a page is motion
697
+ sickness rather than attribution.
698
+ - **What it refuses to draw is the point.** A name several rows answer to rings nothing rather than guessing a row,
699
+ a call an approval or a guard turned back is never drawn at all, a tool no control carries draws nothing, and a
700
+ backgrounded tab draws nothing. A ring on the wrong element is worse than no ring: it is the screen telling the
701
+ user something untrue about what just happened. **`navigate` is in that last class** — the router is not an
702
+ element, so it draws nothing. A bar across the top of the page was tried for it and removed: it read as chrome
703
+ the page had grown rather than as the agent doing something, which is the opposite of attribution.
704
+ - **Turn it off with `visual`** on `Agent.Chat` / `Agent.Zone` — `false` for all of it, `{ cursor: false }` or
705
+ `{ reveal: false }` for one effect. The pointer is chrome (`data-agent-ui`, `aria-hidden`,
706
+ `pointer-events: none`), so `readScreen` never reads it back and `highlight` can never aim at it.
707
+ - **`ToolActivity` is the channel underneath**, a `ToolRunner` host option and an `AgentSession.onActivity`, firing
708
+ `start` / `end` around the execution alone. It is deliberately not `progress`: that one fires only for a tool
709
+ that chose to report, and a tool that says nothing about itself is exactly the one whose effect arrives
710
+ unexplained.
711
+ - **The pointer presses on arrival, never on departure** — a press fired as it leaves is a click on whatever it
712
+ was still over. It glides only when the hop is far enough to be worth following (a third of a second to cross
713
+ fifty pixels reads as lag, not motion), teleports otherwise, and fades once the batch is over. The ring answers
714
+ *where* and the pointer answers *who*, which is why they are one default rather than two.
715
+ - **A form patch fans out over the fields it named.** `fill<Model>Form` is published by the form rather than by any
716
+ one control, so it rings one control per field in the arguments — resolved through the same
717
+ `data-akan-state="<model>Form.<field>"` the setter annotates — capped at five. `writeOn<Model>(path, value)`
718
+ draws nothing, for the same reason it carries no annotation: there is no control to put one on.
@@ -3,7 +3,7 @@ import {
3
3
  CodegenLock,
4
4
  WorkspaceExecutor,
5
5
  AppExecutor
6
- } from "./index-2tv3fdx4.js";
6
+ } from "./index-5nyznra1.js";
7
7
  import"./index-q0y2jq9j.js";
8
8
  import"./index-6wwzs1bc.js";
9
9
  import {
@@ -7,7 +7,7 @@ import {
7
7
  isScannedRootEntry,
8
8
  AppExecutor,
9
9
  LibExecutor
10
- } from "./index-2tv3fdx4.js";
10
+ } from "./index-5nyznra1.js";
11
11
  import {
12
12
  FileSys
13
13
  } from "./index-q0y2jq9j.js";
@@ -19,7 +19,7 @@ import {
19
19
  import {
20
20
  workflowRunArtifactPath,
21
21
  workflowSyncDir
22
- } from "./index-gyd220p2.js";
22
+ } from "./index-jwjaf9fy.js";
23
23
 
24
24
  // pkgs/@akanjs/devkit/akanContext.ts
25
25
  import { readdir } from "fs/promises";
@@ -2,10 +2,10 @@
2
2
  import {
3
3
  runner,
4
4
  script
5
- } from "./index-0g7r8xz3.js";
5
+ } from "./index-b3ae16mg.js";
6
6
  import {
7
7
  LibExecutor
8
- } from "./index-2tv3fdx4.js";
8
+ } from "./index-5nyznra1.js";
9
9
  import {
10
10
  LibSource,
11
11
  formatLibStatuses
@@ -1,14 +1,14 @@
1
1
  // @bun
2
2
  import {
3
3
  AppExecutor
4
- } from "./index-2tv3fdx4.js";
4
+ } from "./index-5nyznra1.js";
5
5
  import {
6
6
  jsonText,
7
7
  createWorkflowBaselineSummary,
8
8
  buildAkanModuleContextIndex,
9
9
  createWorkflowStepRegistry,
10
10
  toolingRolloutGate
11
- } from "./index-gyd220p2.js";
11
+ } from "./index-jwjaf9fy.js";
12
12
  import {
13
13
  buildResourceList,
14
14
  codexMcpConfigPath,
@@ -19,33 +19,33 @@ import {
19
19
  upsertCodexMcpServerBlock,
20
20
  renderDoctorText,
21
21
  AkanContextAnalyzer
22
- } from "./index-ktb5njgy.js";
22
+ } from "./index-15r9a10e.js";
23
23
  import {
24
24
  CommandContainer,
25
25
  runner,
26
26
  script
27
- } from "./index-0g7r8xz3.js";
27
+ } from "./index-b3ae16mg.js";
28
28
  import {
29
29
  isPlaceholderAppId2
30
- } from "./index-wt7qrtd4.js";
30
+ } from "./index-7f4dsf9v.js";
31
31
  import {
32
32
  Prompter
33
33
  } from "./index-h7yw2z9n.js";
34
34
  import {
35
35
  RepairRunner
36
- } from "./index-04bk599g.js";
36
+ } from "./index-em4swemt.js";
37
37
  import {
38
38
  WorkflowRunner
39
- } from "./index-ffvk10zz.js";
39
+ } from "./index-8pkvrcv1.js";
40
40
  import {
41
41
  ModuleScript
42
- } from "./index-5ystnsd5.js";
42
+ } from "./index-fr2x3qvv.js";
43
43
  import {
44
44
  PrimitiveScript
45
- } from "./index-d43r08tf.js";
45
+ } from "./index-kbsach1y.js";
46
46
  import {
47
47
  ScalarScript
48
- } from "./index-a17x49vg.js";
48
+ } from "./index-ceph7zqj.js";
49
49
  import {
50
50
  getMobileTargets
51
51
  } from "./index-47pj3aee.js";
@@ -3576,6 +3576,7 @@ class AppExecutor extends SysExecutor {
3576
3576
  executor: this,
3577
3577
  getPath: (rel) => this.getPath(rel),
3578
3578
  fileExists: (rel) => FileSys.fileExists(this.getPath(rel)),
3579
+ readFile: (rel) => this.readFile(rel),
3579
3580
  writeFile: async (rel, content, opts) => {
3580
3581
  await this.writeFile(rel, content, opts);
3581
3582
  },
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  import {
3
3
  CommandExecutionError
4
- } from "./index-2tv3fdx4.js";
4
+ } from "./index-5nyznra1.js";
5
5
  import {
6
6
  resolveMobilePath,
7
7
  targetHtmlFilename
@@ -20,13 +20,13 @@ import {
20
20
  renderWorkflowApply,
21
21
  renderWorkflowValidation,
22
22
  renderWorkflowRunArtifact
23
- } from "./index-gyd220p2.js";
23
+ } from "./index-jwjaf9fy.js";
24
24
  import {
25
25
  AkanContextAnalyzer
26
- } from "./index-ktb5njgy.js";
26
+ } from "./index-15r9a10e.js";
27
27
  import {
28
28
  runner
29
- } from "./index-0g7r8xz3.js";
29
+ } from "./index-b3ae16mg.js";
30
30
 
31
31
  // pkgs/@akanjs/cli/workflow/workflow.runner.ts
32
32
  import { mkdir, readFile, writeFile } from "fs/promises";
@@ -3,20 +3,20 @@ import {
3
3
  getDefaultHostConfig,
4
4
  GlobalConfig,
5
5
  CloudApi
6
- } from "./index-m0xccmmm.js";
6
+ } from "./index-bw2marpf.js";
7
7
  import {
8
8
  WorkspaceExecutor,
9
9
  AppExecutor
10
- } from "./index-2tv3fdx4.js";
10
+ } from "./index-5nyznra1.js";
11
11
  import {
12
12
  AiSession
13
- } from "./index-te54x9zm.js";
13
+ } from "./index-yc1keaer.js";
14
14
  import {
15
15
  runner
16
- } from "./index-0g7r8xz3.js";
16
+ } from "./index-b3ae16mg.js";
17
17
  import {
18
18
  openBrowser
19
- } from "./index-sj5vxr8f.js";
19
+ } from "./index-r8bd61d9.js";
20
20
 
21
21
  // pkgs/@akanjs/cli/cloud/cloud.runner.ts
22
22
  import path from "path";
@@ -2,25 +2,25 @@
2
2
  import {
3
3
  GlobalConfig,
4
4
  CloudApi
5
- } from "./index-m0xccmmm.js";
5
+ } from "./index-bw2marpf.js";
6
6
  import {
7
7
  PkgExecutor
8
- } from "./index-2tv3fdx4.js";
8
+ } from "./index-5nyznra1.js";
9
9
  import {
10
10
  AiSession
11
- } from "./index-te54x9zm.js";
11
+ } from "./index-yc1keaer.js";
12
12
  import {
13
13
  script
14
- } from "./index-0g7r8xz3.js";
14
+ } from "./index-b3ae16mg.js";
15
15
  import {
16
16
  ApplicationScript
17
- } from "./index-sj5vxr8f.js";
17
+ } from "./index-r8bd61d9.js";
18
18
  import {
19
19
  PackageScript
20
- } from "./index-9077wzd2.js";
20
+ } from "./index-t8gvwcrx.js";
21
21
  import {
22
22
  CloudRunner
23
- } from "./index-rtxxan88.js";
23
+ } from "./index-8tfmh0v6.js";
24
24
 
25
25
  // pkgs/@akanjs/cli/cloud/cloud.script.ts
26
26
  import { Logger } from "akanjs/common";
@@ -9,7 +9,7 @@ import {
9
9
  LibExecutor,
10
10
  PkgExecutor,
11
11
  ModuleExecutor
12
- } from "./index-2tv3fdx4.js";
12
+ } from "./index-5nyznra1.js";
13
13
  import {
14
14
  getDirname2
15
15
  } from "./index-6wwzs1bc.js";
@@ -216,6 +216,15 @@ class CloudApi {
216
216
  this.#api.setHeaders({ Authorization: `Bearer ${this.#accessToken.jwt}` });
217
217
  return this.#accessToken;
218
218
  }
219
+ async requestTunnel(input) {
220
+ return await this.#api.post(`/requestTunnel`, input);
221
+ }
222
+ async tunnelListInSelf() {
223
+ return await this.#api.get(`/tunnelListInSelf`);
224
+ }
225
+ async revokeTunnel(code) {
226
+ return await this.#api.post(`/revokeTunnel`, { code });
227
+ }
219
228
  async getRemoteSelf() {
220
229
  try {
221
230
  const data = await this.#api.get(`/getRemoteSelf`);
@@ -2,15 +2,15 @@
2
2
  import {
3
3
  runner,
4
4
  script
5
- } from "./index-0g7r8xz3.js";
5
+ } from "./index-b3ae16mg.js";
6
6
  import {
7
7
  generatedFilesForSync,
8
8
  createPassedPrimitiveReport,
9
9
  scalarChangedFiles
10
- } from "./index-gyd220p2.js";
10
+ } from "./index-jwjaf9fy.js";
11
11
  import {
12
12
  AiSession
13
- } from "./index-te54x9zm.js";
13
+ } from "./index-yc1keaer.js";
14
14
  import {
15
15
  Prompter
16
16
  } from "./index-h7yw2z9n.js";