@aifabrix/builder 2.57.0 → 2.59.0

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 (106) hide show
  1. package/lib/agent-kit/codex-app-server.js +44 -0
  2. package/lib/agent-kit/init.js +4 -17
  3. package/lib/agent-kit/session-report.js +15 -10
  4. package/lib/agent-kit/setup-auth.js +131 -0
  5. package/lib/agent-kit/setup-context.js +118 -0
  6. package/lib/agent-kit/setup-github.js +70 -0
  7. package/lib/agent-kit/setup-managed.js +79 -0
  8. package/lib/agent-kit/setup-process.js +42 -0
  9. package/lib/agent-kit/setup-session.js +53 -0
  10. package/lib/agent-kit/setup-state.js +52 -0
  11. package/lib/agent-kit/setup-workspace.js +113 -0
  12. package/lib/agent-kit/setup.js +84 -0
  13. package/lib/agent-kit/start.js +4 -3
  14. package/lib/agent-kit/tmux-sessions.js +20 -3
  15. package/lib/api/dev.api.js +1 -1
  16. package/lib/api/miso-health.api.js +26 -0
  17. package/lib/api/types/dev.types.js +3 -3
  18. package/lib/app/deploy.js +0 -102
  19. package/lib/app/push.js +98 -41
  20. package/lib/build/standard-docker-build.js +13 -11
  21. package/lib/cli/index.js +4 -0
  22. package/lib/cli/setup-app.js +16 -5
  23. package/lib/cli/setup-dev-path-commands.js +53 -2
  24. package/lib/cli/setup-dev.js +7 -4
  25. package/lib/cli/setup-environment.js +17 -4
  26. package/lib/cli/setup-help.js +86 -0
  27. package/lib/cli/setup-onboarding.js +37 -0
  28. package/lib/cli/setup-utility-repair.js +7 -5
  29. package/lib/commands/agent-kit-help.js +21 -7
  30. package/lib/commands/agent-kit-sessions.js +126 -0
  31. package/lib/commands/agent-kit-setup.js +44 -0
  32. package/lib/commands/agent-kit.js +5 -79
  33. package/lib/commands/dev-init.js +21 -23
  34. package/lib/commands/dev-refresh.js +2 -2
  35. package/lib/commands/dev-registry.js +155 -0
  36. package/lib/commands/dev-show-display.js +10 -2
  37. package/lib/commands/governance-verify-external.js +12 -5
  38. package/lib/commands/repair-datasource.js +9 -9
  39. package/lib/commands/repair.js +45 -8
  40. package/lib/commands/setup-image-refresh.js +26 -0
  41. package/lib/commands/upload-qualification-client.js +56 -11
  42. package/lib/commands/upload-qualification-poll.js +51 -22
  43. package/lib/commands/wizard-dataplane.js +16 -52
  44. package/lib/core/config-attach-extensions.js +4 -1
  45. package/lib/datasource/datasource-validate-summary.js +8 -5
  46. package/lib/datasource/sync-defaults.js +53 -0
  47. package/lib/deployment/installation/azure-infra-stage.js +50 -9
  48. package/lib/deployment/installation/azure-preflight.js +63 -7
  49. package/lib/deployment/installation/azure-readiness.js +59 -7
  50. package/lib/deployment/installation/environment-auth.js +60 -20
  51. package/lib/deployment/installation/environment-stage.js +9 -5
  52. package/lib/deployment/installation/infra-catalog.js +57 -5
  53. package/lib/deployment/installation/infra-manifest.js +22 -2
  54. package/lib/deployment/installation/infra-projection.js +14 -3
  55. package/lib/deployment/installation/registry-auth-mode.js +121 -0
  56. package/lib/deployment/installation/stage-input.js +21 -6
  57. package/lib/deployment/marketplace-environment.js +26 -1
  58. package/lib/generator/builders.js +8 -9
  59. package/lib/generator/index.js +23 -12
  60. package/lib/integration-definition/apply.js +2 -2
  61. package/lib/internal/fs-real-sync.js +4 -1
  62. package/lib/programmatic/bearer-auth.js +3 -62
  63. package/lib/programmatic/builder-api-startup.js +51 -0
  64. package/lib/programmatic/builder-miso-runtime.js +167 -0
  65. package/lib/programmatic/openapi-descriptions.js +3 -3
  66. package/lib/programmatic/openapi-schema-descriptions-core.js +3 -3
  67. package/lib/programmatic/openapi-spec.js +2 -1
  68. package/lib/programmatic/route-handler-map.js +3 -2
  69. package/lib/schema/environment-deploy-request.schema.json +1 -1
  70. package/lib/schema/external-datasource.schema.json +20 -5
  71. package/lib/schema/infra-parameter.schema.json +1 -1
  72. package/lib/schema/infra.parameter.yaml +2 -1
  73. package/lib/schema/infrastructure-schema.json +200 -3
  74. package/lib/schema/installation-environment.schema.json +1 -1
  75. package/lib/schema/wizard-config.schema.json +1 -1
  76. package/lib/utils/app-register-config.js +2 -4
  77. package/lib/utils/build-resolve-image.js +2 -21
  78. package/lib/utils/cli-utils.js +8 -1
  79. package/lib/utils/config-paths.js +24 -29
  80. package/lib/utils/config-registry-preference.js +113 -0
  81. package/lib/utils/dev-init-ssh-merge.js +5 -4
  82. package/lib/utils/dev-user-groups.js +2 -1
  83. package/lib/utils/docker-build.js +53 -19
  84. package/lib/utils/docker-daemon-tls-ca.js +2 -2
  85. package/lib/utils/env-map.js +23 -6
  86. package/lib/utils/error-formatters/validation-errors.js +25 -5
  87. package/lib/utils/help-builder.js +4 -3
  88. package/lib/utils/image-tags.js +88 -0
  89. package/lib/utils/promote-dev-docker-image.js +6 -0
  90. package/lib/utils/registry-credentials.js +236 -0
  91. package/lib/utils/resolve-docker-image-ref.js +78 -9
  92. package/lib/utils/secrets-helpers.js +9 -1
  93. package/lib/utils/token-manager.js +29 -36
  94. package/lib/utils/variable-transformer.js +2 -4
  95. package/package.json +4 -2
  96. package/templates/agent-kit/instructions/AGENTKIT.md +39 -2
  97. package/templates/agent-kit/instructions/root.AGENTS.md +40 -1
  98. package/templates/agent-kit/skills/shared/hosts.md +23 -5
  99. package/templates/agent-kit/workspace/README.md +14 -1
  100. package/templates/applications/builder-api/application.yaml +1 -1
  101. package/templates/applications/dataplane/application.yaml +1 -1
  102. package/templates/applications/dataplane/env.template +1 -1
  103. package/templates/applications/miso-controller/application.yaml +1 -1
  104. package/templates/applications/miso-controller/env.template +1 -1
  105. package/templates/external-system/external-datasource.yaml.hbs +7 -6
  106. package/templates/marketplace/main.json +440 -82
@@ -14,6 +14,44 @@ Do not edit platform product source (`aifabrix-dataplane`, `aifabrix-miso`, `aif
14
14
 
15
15
  Vendor limits, tenant ids, credentials, PII stance, partitions, and the designated mutation subject live only in `integration/<systemKey>/README.md`.
16
16
 
17
+ ## First greeting
18
+
19
+ On a first “Hi”, start with the business problem in plain language. Explain
20
+ that their process, people, outcome, systems, and a real example become a plan,
21
+ Connected Systems, a Role Assistant, and proof. Show these skills in a table:
22
+
23
+ | Skill | How it helps |
24
+ | --- | --- |
25
+ | aifabrix-plan | Turn the business context or spec into a plan; ask about gaps |
26
+ | aifabrix-connected-system | Validate, build, test, and publish needed systems |
27
+ | aifabrix-role-assistant | Create or update a catalog role using published systems |
28
+ | aifabrix-prove | Test a real business example and record the result |
29
+
30
+ Render skill names with `$` in Codex and `/` in Claude Code or Cursor. Do not
31
+ run CLI commands or lead with inventory, sign-in, or gates on this first reply.
32
+
33
+ Ask one opening question: what business process or role should we help, and
34
+ what should improve? Invite a spec, API document, sample payload, or example
35
+ workflow if they have one. Say a plain-language description is enough to start;
36
+ missing details will become explicit questions. Keep the greeting brief.
37
+
38
+ ## After the business context
39
+
40
+ Before planning or using online Builder commands, check the workspace and
41
+ sign-in. Run `aifabrix auth status`; if signed out, follow
42
+ `.agents/skills/shared/login.md` and ask for the Controller URL only if needed.
43
+ Read `README.md` and list package folder names under `integration/` and
44
+ `role-assistant/`; do not open package data or secrets for discovery. If signed
45
+ in, run `aifabrix list` to find remote systems. If listing fails, report the
46
+ failure; do not infer that there are no systems. Distinguish local packages
47
+ from remote entries, and published Connected Systems from drafts, Role
48
+ Assistants, and Enterprise Knowledge. Never print tokens.
49
+
50
+ Then suggest the relevant skill from the first table and explain its gate.
51
+ Summarize sign-in and discovery only as needed for the chosen work; give at
52
+ most two relevant remote examples unless asked for the
53
+ full list. Do not print email, IDs, URLs, or versions in a routine status.
54
+
17
55
  ## Secrets
18
56
 
19
57
  Use `kv://` and `aifabrix secret`. Never store, print, ask for, or commit secret values.
@@ -27,7 +65,8 @@ Do not collapse these into a generic success boolean. Do not start the next life
27
65
 
28
66
  ## Coding hosts
29
67
 
30
- Cursor, Claude Code, and Codex — local machine or SSH (tmux, Claude Remote Control): `.agents/skills/shared/hosts.md`.
68
+ Cursor, Claude Code, and Codex — local or remote SSH projects, with optional
69
+ tmux terminal sessions: `.agents/skills/shared/hosts.md`.
31
70
  Install and sign-in: `AGENTKIT.md`. Builder CLI login from chat: `.agents/skills/shared/login.md`.
32
71
 
33
72
  ## Docs
@@ -6,6 +6,11 @@ Install and sign-in steps are in `AGENTKIT.md`. This file is how to **run** each
6
6
 
7
7
  Do not start Claude or Codex in your home directory. `cd` into this git workspace first.
8
8
 
9
+ For first-time terminal onboarding, run `aifabrix agent-kit setup <controllerUrl>`.
10
+ It creates a local workspace under AI Fabrix work and starts Codex; use `--code claude`
11
+ to select Claude. GitHub is optional through `--repo owner/name`. Setup preserves
12
+ permission settings; the standalone start defaults below remain separate.
13
+
9
14
  ## Auto-approve
10
15
 
11
16
  `aifabrix agent-kit install` can write gitignored host configs so Claude Code and Codex do not prompt for every tool:
@@ -23,7 +28,11 @@ Those files stay in **this workspace**. Claude may **read** files under the deve
23
28
 
24
29
  ## Claude Code
25
30
 
26
- **Local or SSH — tmux.** Closing the terminal must not kill Claude. Agent Kit starts Claude **inside tmux**, with Remote Control and workspace auto-approval enabled by default. Remote Control is the **same** session on this PC, [claude.ai/code](https://claude.ai/code), and the Claude mobile app (**Code**). Do not use `claude --cloud` for this — that starts a different machine that clones GitHub. Claude `--tmux` is only for `--worktree` sessions, not this wrapper.
31
+ On a managed host, `af onboarding --coding claude` starts or reuses a detached
32
+ Claude tmux session and prints how to attach. Its Remote Control session is
33
+ available from the same Claude account when supported.
34
+
35
+ **Optional terminal session — tmux.** When you choose a terminal workflow, Agent Kit starts Claude **inside tmux**, with Remote Control and workspace auto-approval enabled by default. Remote Control is the **same** session on this PC, [claude.ai/code](https://claude.ai/code), and the Claude mobile app (**Code**). Do not use `claude --cloud` for this — that starts a different machine that clones GitHub. Claude `--tmux` is only for `--worktree` sessions, not this wrapper.
27
36
 
28
37
  ```bash
29
38
  aifabrix agent-kit start claude
@@ -37,13 +46,21 @@ Closing the terminal (or SSH) does not stop a tmux session. Stopping tmux or the
37
46
 
38
47
  ## Codex
39
48
 
40
- **Local or SSH — tmux and Remote Control.** tmux keeps Codex running if you close the terminal or disconnect SSH. Agent Kit also starts Codex's native remote-control daemon and workspace auto-approval by default.
49
+ **Remote SSH project.** Open the workspace printed by `af onboarding` in the
50
+ Codex app. The app's server connection runs separately from tmux, so no tmux
51
+ session is needed for that chat.
52
+
53
+ **Optional terminal session — tmux and Remote Control.** tmux keeps a separate
54
+ terminal Codex session running if you disconnect SSH. `agent-kit start codex`
55
+ also requests Codex's native Remote Control by default; the npm-installed CLI
56
+ may require `--no-remote-control` because the daemon needs Codex's standalone
57
+ installer.
41
58
 
42
59
  ```bash
43
60
  aifabrix agent-kit start codex
44
61
  ```
45
62
 
46
- Default `--name` is the last folder. `--no-remote-control` keeps the launch local; `--skip-approve-all` leaves Codex permissions unchanged. If that session already exists, `start` fails with list/kill guidance. Detach: `Ctrl-b` then `d`. Reattach with `tmux attach -t aifabrix-docs`. Then `$aifabrix-plan` (and the other `$aifabrix-*` skills). Codex reads `AGENTS.md`. Killing tmux does not stop the shared daemon; use `codex remote-control stop` when required.
63
+ Default `--name` is the last folder. `--no-remote-control` skips that daemon; `--skip-approve-all` leaves Codex permissions unchanged. If that session already exists, `start` fails with list/kill guidance. Detach: `Ctrl-b` then `d`. Reattach with `tmux attach -t aifabrix-docs`. Then `$aifabrix-plan` (and the other `$aifabrix-*` skills). Codex reads `AGENTS.md`. A separate Codex app server used by a desktop SSH chat appears in `agent-kit list` and the interactive `agent-kit kill` menu; stopping it requires confirmation and may disconnect the chat. `codex remote-control stop` only controls a standalone-managed daemon.
47
64
 
48
65
  **Foreground only (no tmux).**
49
66
 
@@ -58,8 +75,9 @@ codex
58
75
  | --- | --- |
59
76
  | New named session | `tmux new -s <name> -c /path/to/this-workspace` |
60
77
  | Detach (leave it running) | `Ctrl-b`, then `d` |
61
- | List sessions | `aifabrix agent-kit list` |
78
+ | List sessions; choose tmux to attach or Close | `aifabrix agent-kit list` |
62
79
  | Attach | `tmux attach -t <name>` |
63
- | Kill session | `aifabrix agent-kit kill <name>` |
80
+ | Stop tmux by name | `aifabrix agent-kit kill <name>` |
81
+ | Choose a tmux session or Codex app server to stop | `aifabrix agent-kit kill` |
64
82
 
65
83
  Use a different `--name` per workspace so several Claude or Codex sessions can run on the same host. Claude and Codex in the **same** folder also need two names.
@@ -8,8 +8,21 @@ Vendor limits, credentials, designated test subjects, and PII live only in each
8
8
 
9
9
  ## How to start
10
10
 
11
+ You can say **“Hi”** in a new agent chat. Describe the business process or
12
+ role you want to improve and the result you need; a plain-language example is
13
+ enough to start. The agent will map that context to Connected Systems, a Role
14
+ Assistant, and a way to prove the result. It checks sign-in and existing
15
+ systems before planning the work.
16
+
17
+ | Claude Code / Cursor | Codex | What the skill guides |
18
+ | --- | --- | --- |
19
+ | `/aifabrix-plan` | `$aifabrix-plan` | Turn business context or a spec into a plan and identify missing facts |
20
+ | `/aifabrix-connected-system` | `$aifabrix-connected-system` | Validate, build, test, and publish Connected Systems |
21
+ | `/aifabrix-role-assistant` | `$aifabrix-role-assistant` | Create or update a catalog Role Assistant using published systems |
22
+ | `/aifabrix-prove` | `$aifabrix-prove` | Prove a real business case and record the result |
23
+
11
24
  1. Open **this folder** in Cursor, Claude Code, or Codex. Host install and sign-in: **[AGENTKIT.md](./AGENTKIT.md)**.
12
- 2. The agent checks `aifabrix auth status`. If you are not signed in, it asks for the Miso Controller URL and gives you a browser link. You do not need a terminal. Details: **[AGENTKIT.md](./AGENTKIT.md)**.
25
+ 2. Before planning or using online Builder commands, the agent checks `aifabrix auth status`. If you are not signed in, it asks for the Miso Controller URL and gives you a browser link. You do not need a terminal. Details: **[AGENTKIT.md](./AGENTKIT.md)**.
13
26
  3. In chat, either **invoke a skill** or **paste a prompt** from the tables below. Work in order. Wait for the gate (`PLAN_READY`, `READY`, `BUILT`, then `PASS` or `PASS_WITH_SKIPS`) before the next step.
14
27
 
15
28
  ### How to use prompts
@@ -5,7 +5,7 @@ app:
5
5
  description: 'Business Transformation services — HTTP orchestration for connected-system workspace lifecycle via Dataplane Enterprise MCP and governance APIs.'
6
6
  type: webapp
7
7
  language: typescript
8
- version: 1.0.0
8
+ version: 2.59.0
9
9
 
10
10
  # Image Configuration
11
11
  image:
@@ -5,7 +5,7 @@ app:
5
5
  description: "AI Fabrix Dataplane is a secure, in-tenant integration and automation layer that supplies governed, normalized, and explainable enterprise data to AI agents. Using CIP as a declarative standard, it enforces RBAC and ABAC, executes integrations, and exposes trusted data via MCP and OpenAPI."
6
6
  type: webapp
7
7
  language: python # Explicitly specify Python language
8
- version: 2.0.70
8
+ version: 2.0.71
9
9
  # Image Configuration
10
10
  # Set tag to match your build (example: aifabrix build dataplane -t 1.0.0).
11
11
  # Registry is required so the controller can pull the image (avoids docker-not-found on the controller host).
@@ -44,7 +44,7 @@ API_KEY_BYPASS_ROLES=full-access
44
44
 
45
45
  # API Configuration
46
46
  API_V1_STR=/api/v1
47
- VERSION=2.0.70
47
+ VERSION=2.0.71
48
48
  # Minimum supported aifabrix-builder CLI semver (advertised on /health and /api/v1/health; empty = no gate)
49
49
  # MIN_BUILDER_CLI_VERSION=2.45.0
50
50
  MIN_BUILDER_CLI_VERSION=2.45.5
@@ -4,7 +4,7 @@ app:
4
4
  displayName: 'Miso Controller'
5
5
  description: 'Miso is the AI Fabrix in-tenant controller and portal layer for securely operating enterprise AI apps inside a customer’s Azure tenant. It provides Entra ID SSO, RBAC, audit logs, environment/app configuration via schemas, and safe secret handling via Key Vault references—ensuring governance, traceability, and predictable UX across portal, SDK, and CLI.'
6
6
  type: webapp
7
- version: '2.0.81'
7
+ version: '2.0.82'
8
8
  # Image Configuration
9
9
  # Set tag to match your build (e.g. aifabrix build miso-controller -t 1.0.0 then tag: 1.0.0)
10
10
  # Registry is required so the controller can pull the image (avoids "docker: not found" on the controller host).
@@ -46,7 +46,7 @@ SKIP_FIRST_TIME_SETUP=false
46
46
  ONBOARDING_CONTROLLER_KEY=miso-controller
47
47
 
48
48
  # Infrastructure/service name used by controller/onboarding flows
49
- INFRASTRUCTURE_NAME=aifabrix
49
+ INFRASTRUCTURE_NAME=${DEV_USERNAME}.${DEV_ROOT_DOMAIN}
50
50
 
51
51
  # Azure region (required for first-time onboarding: controller record / provisioning metadata).
52
52
  # Use the region you deploy to (e.g. westeurope, eastus, northeurope). Single env name: LOCATION.
@@ -98,7 +98,7 @@ openapi:
98
98
 
99
99
  # --- Optional sections: uncomment or delete as needed ---
100
100
  #
101
- # Query-time (v2.4): public list/get/filter are served from persisted Dataplane DB — not live external HTTP on every read (Plan 346 section 11).
101
+ # Query-time: public list/get/filter are served from persisted Dataplane DB — not live external HTTP on every read.
102
102
  # External APIs: sync jobs and create/update/delete execution paths. CIP fetch→map is for ingestion, writes, or orchestration — populate storage before expecting query APIs.
103
103
  #
104
104
  # CIP (Composable Integration Pipeline): fetch → [paginate] → [map] → [filter] → output
@@ -106,12 +106,13 @@ openapi:
106
106
  # execution.cip requires version "1.0" and operations.<name>.steps ($defs.cipDefinition). Custom operation keys must match the same pattern as capabilities[].
107
107
  #
108
108
  {{#if (eq schemaEntityType "recordStorage")}}
109
- # sync: external APIs run during sync (Plan 346 section 11). Minimal contract: mode/schedule/batchSize per schema. FK fields on a record should update atomically in one logical write.
109
+ # sync: external APIs run during synchronization. New automatic schedules default to calendar-month cadence in UTC.
110
+ # Omit schedule to retain manual-only synchronization. Set enabled: false for total synchronization disable; retained schedule and incremental settings are preserved.
110
111
  # sync:
111
- # pull:
112
- # enabled: true
113
- # schedule: "0 * * * *"
114
- # batchSize: 500
112
+ # enabled: true
113
+ # mode: pull
114
+ # schedule: "@monthly"
115
+ # batchSize: 500
115
116
  # validation: structural / pre-persistence checks; quality: post-mapping acceptance (e.g. rejectIf) — see schema when you enable them.
116
117
  # capabilities: standard names list, get, create, update, delete + custom names matching ^[a-z][a-zA-Z0-9]*$; must match execution.cip.operations / openapi.operations you implement.
117
118
  # capabilities: [list, get]