diff --git a/CHANGELOG.md b/CHANGELOG.md index 677f33d0..714e5061 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,20 @@ SPDX-License-Identifier: Apache-2.0 # Changelog +## 0.1.0a11 + +- Guide AI provider connections, Lumi settings, and workflow AI profiles through + focused steps with review before creation or application. Keep unfinished + profile changes local and apply the profile and connection slot atomically. +- Let authors explicitly pass available earlier AI results as structured context + within one workflow execution, using existing compiler-checked expressions. +- Document the verified alpha10 Azure application-token, AI workflow, Lumi, and + HTTP acceptance separately from unverified interactive Entra sign-in. +- Correct browser selection tests to wait for the insertion reveal before + checking pointer reachability. +- Publish worker packages 0.1.3 pinned to core 0.1.0a11. No server behavior or + database migration changes; the schema remains `0028_files`. + ## 0.1.0a10 - Expose Lumi configuration through the paired Studio host and clarify the diff --git a/README.md b/README.md index 8a38ef35..11a60c77 100644 --- a/README.md +++ b/README.md @@ -53,13 +53,14 @@ maps service tasks, user tasks, gateways, and timers to Weave steps. ## What you get -The **v0.1.0a10 alpha** release provides the **API, CLI, Python SDK, and Studio** +The **v0.1.0a11 alpha** release provides the **API, CLI, Python SDK, and Studio** visual workspace, with human-task inboxes, email conversations, execution management, and administration of people and access. Run Weave as a standalone service or embed it in another product. -**New in 0.1.0a9:** configure AI provider connections from Studio settings, select -Lumi's connection by name, and run Agentic workers with renewable OAuth2 credentials. +**New in 0.1.0a11:** configure AI provider connections, Lumi, and workflow AI +profiles through guided setup with review before saving. Explicitly select +earlier AI results as [shared context within one execution](docs/guides/shared-ai-context.md). See the illustrated [AI workflow guide](docs/guides/ai-workers.md) and [Lumi guide](docs/guides/lumi.md). @@ -80,7 +81,7 @@ See the illustrated [AI workflow guide](docs/guides/ai-workers.md) and Read the [capability matrix](docs/capabilities.md) for tested boundaries and live-provider checks that remain environment-specific. -Studio runs in your browser from the [installed CLI](docs/guides/studio.md#install-the-alpha10-browser-application) +Studio runs in your browser from the [installed CLI](docs/guides/studio.md#install-the-alpha11-browser-application) or as a [desktop app](docs/guides/desktop.md). The macOS desktop bundles are ad-hoc signed, not Developer ID signed or notarized, so macOS may ask you to approve them; do not use the alpha5 macOS installers, which were damaged. The @@ -118,7 +119,7 @@ integration code. Each has its own guide, so you can stop at the result you need ## Install and discover the CLI On macOS, Linux, or WSL, install **Python 3.12 or newer** with `venv` support, -then run this block in Bash or Zsh. It installs the pinned **v0.1.0a10 alpha** +then run this block in Bash or Zsh. It installs the pinned **v0.1.0a11 alpha** into your user account without `sudo`, Git, or Docker: ```sh @@ -126,12 +127,12 @@ into your user account without `sudo`, Git, or Docker: # Stop if downloading the installer fails. set -o pipefail curl --proto '=https' --tlsv1.2 -fsSL \ - https://github.com/fireflyframework/firefly-weave/releases/download/v0.1.0a10/install.sh \ - | sh -s -- --version v0.1.0a10 + https://github.com/fireflyframework/firefly-weave/releases/download/v0.1.0a11/install.sh \ + | sh -s -- --version v0.1.0a11 ) ``` -Expected: `Installed Firefly Weave 0.1.0a10:` followed by the command's path. Then +Expected: `Installed Firefly Weave 0.1.0a11:` followed by the command's path. Then make the default command directory available in this terminal and look around: ```sh @@ -145,7 +146,7 @@ weave help workflow weave docs platform ``` -Expected: `Firefly Weave 0.1.0a10`, the command overview, the `workflow` +Expected: `Firefly Weave 0.1.0a11`, the command overview, the `workflow` commands, and the address of the platform guide. You do not need to learn every command first: help explains each family and its next steps. The [installation guide](docs/installation.md) covers choosing Python, a permanent @@ -178,7 +179,7 @@ Compose files and setup helpers. Clone the tag that matches the CLI: ```sh # Keep the platform files at the same version as the CLI. -git clone --branch v0.1.0a10 --single-branch https://github.com/fireflyframework/firefly-weave.git +git clone --branch v0.1.0a11 --single-branch https://github.com/fireflyframework/firefly-weave.git cd firefly-weave # Check prerequisites, then prepare private settings and dependencies once. @@ -264,7 +265,7 @@ path, and the detailed diagrams. ## Current release and limits -The recommended installation is **v0.1.0a10**, an **alpha** release. Download +The recommended installation is **v0.1.0a11**, an **alpha** release. Download packages and checksums from [GitHub Releases](https://github.com/fireflyframework/firefly-weave/releases). The documentation on a branch describes the source on that branch; a release tag @@ -280,12 +281,18 @@ setup and delivery still need validation in your environment. Sign-in from the CLI, and from Studio in an opt-in browser test, has been verified end to end only against the local platform's Keycloak 26.7.4, and sign-in with a code from a locally built macOS desktop app against the same platform; browser sign-in from -the desktop app and the DMG have not been verified. Microsoft Entra ID and other -OIDC providers have configuration guidance, not verification: the built-in token -verifier accepts Entra's signing keys, which omit `alg`, but only unit tests -cover them, and no Entra token has been verified yet. Credential storage on +the desktop app and the DMG have not been verified. Credential storage on Windows and Linux is not verified. +Azure preproduction checks on alpha10 verified Microsoft Entra ID application +tokens for a host application and an independent Agentic worker. An Azure OpenAI +workflow completed through that worker with consistent replay, and Lumi returned +a response through its separate gateway. An HTTP workflow also completed after +the alpha10 deployment, and five existing run states were unchanged. These checks +do not verify Entra browser or device-code sign-in for people, other identity providers, or general +provider availability. See the [capability matrix](docs/capabilities.md) for the +verified scope. + ## Meet Lumi  diff --git a/desktop/RELEASE.md b/desktop/RELEASE.md index 7ed11eb2..85393bf6 100644 --- a/desktop/RELEASE.md +++ b/desktop/RELEASE.md @@ -17,16 +17,16 @@ SPDX-License-Identifier: Apache-2.0 --> # Desktop release versions -The alpha10 product version is `0.1.0-alpha.10` in npm, Cargo and Tauri. It corresponds -to Python `0.1.0a10` and the repository prerelease tag `v0.1.0a10`. +The alpha11 product version is `0.1.0-alpha.11` in npm, Cargo and Tauri. It corresponds +to Python `0.1.0a11` and the repository prerelease tag `v0.1.0a11`. -Windows MSI uses the explicit numeric version `0.1.10`. Tauri's pinned bundler rejects +Windows MSI uses the explicit numeric version `0.1.11`. Tauri's pinned bundler rejects nonnumeric prerelease identifiers when deriving MSI versions; its `windows.wix.version` override supplies the valid numeric installer version while filenames retain the product version. MSI compares only the first three fields. Future desktop alpha and stable releases must advance this numeric installer counter: the stable product `0.1.0` must not reset the MSI counter to `0.1.0`. The macOS internal bundle version also uses -numeric `0.1.10`; its displayed product version remains the alpha product version. +numeric `0.1.11`; its displayed product version remains the alpha product version. The Desktop installers workflow builds on four native runners and is dispatchable by an exact branch/tag ref. Versioned, target-specific unsigned artifacts contain only diff --git a/desktop/package-lock.json b/desktop/package-lock.json index 6509deb5..aced224e 100644 --- a/desktop/package-lock.json +++ b/desktop/package-lock.json @@ -1,12 +1,12 @@ { "name": "@firefly-weave/desktop", - "version": "0.1.0-alpha.10", + "version": "0.1.0-alpha.11", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@firefly-weave/desktop", - "version": "0.1.0-alpha.10", + "version": "0.1.0-alpha.11", "license": "Apache-2.0", "devDependencies": { "@tauri-apps/cli": "2.12.1" diff --git a/desktop/package.json b/desktop/package.json index 19e44a5a..930f3b88 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -1,6 +1,6 @@ { "name": "@firefly-weave/desktop", - "version": "0.1.0-alpha.10", + "version": "0.1.0-alpha.11", "private": true, "license": "Apache-2.0", "scripts": { diff --git a/desktop/src-tauri/Cargo.lock b/desktop/src-tauri/Cargo.lock index 39e8c27f..a0041c50 100644 --- a/desktop/src-tauri/Cargo.lock +++ b/desktop/src-tauri/Cargo.lock @@ -794,7 +794,7 @@ checksum = "aedcfb3409746eddb02b9e19ebda1c3394f759a152e48ee875a0844d1b955484" [[package]] name = "firefly-weave-studio" -version = "0.1.0-alpha.10" +version = "0.1.0-alpha.11" dependencies = [ "serde", "serde_json", diff --git a/desktop/src-tauri/Cargo.toml b/desktop/src-tauri/Cargo.toml index 40458ac7..e417c2f6 100644 --- a/desktop/src-tauri/Cargo.toml +++ b/desktop/src-tauri/Cargo.toml @@ -16,7 +16,7 @@ [package] name = "firefly-weave-studio" -version = "0.1.0-alpha.10" +version = "0.1.0-alpha.11" description = "Firefly Weave Studio desktop" authors = ["Firefly Software Foundation"] license = "Apache-2.0" diff --git a/desktop/src-tauri/tauri.conf.json b/desktop/src-tauri/tauri.conf.json index a1230e5f..dec374a4 100644 --- a/desktop/src-tauri/tauri.conf.json +++ b/desktop/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "Firefly Weave Studio", - "version": "0.1.0-alpha.10", + "version": "0.1.0-alpha.11", "identifier": "io.getfirefly.weave.studio", "build": { "frontendDist": "../bootstrap" @@ -52,7 +52,7 @@ "y": 160 } }, - "bundleVersion": "0.1.10", + "bundleVersion": "0.1.11", "signingIdentity": "-", "entitlements": "entitlements.plist" }, @@ -61,7 +61,7 @@ "type": "downloadBootstrapper" }, "wix": { - "version": "0.1.10" + "version": "0.1.11" } }, "icon": [ diff --git a/docs/README.md b/docs/README.md index 805a5cbf..e287a956 100644 --- a/docs/README.md +++ b/docs/README.md @@ -47,7 +47,7 @@ gives the steps and what you finish with. | An administrator | Install the platform, configure sign-in, and give people access | [Start a local platform](guides/local-platform.md) | [Identity and secrets](operations/identity-and-secrets.md), [remote deployment](operations/remote-deployment.md), [people and access](guides/people-and-access.md), and [configuration](operations/configuration.md) | | An operator | Keep runs healthy, fix incidents, upgrade, and back up | [Connect the CLI](guides/connect-to-api.md), then [manage runs](guides/execution-management.md) | [Incidents](reference/incident-operations.md), [troubleshooting](operations/troubleshooting.md), [observability](operations/observability.md), [upgrades](operations/upgrades.md), [backup](operations/backup-restore.md), and [debug-session retention](operations/retention.md) | -Start each path by [installing the CLI](installation.md) from the v0.1.0a10 +Start each path by [installing the CLI](installation.md) from the v0.1.0a11 release. [Who does what](guides/roles-and-lifecycle.md) explains these roles with an @@ -104,7 +104,7 @@ Run one command block, check its **Expected** result, then continue. Comments inside code blocks explain why each command is there. When a terminal shows server logs, keep it open and use a second terminal for client commands. -The guides pin the **v0.1.0a10 alpha** release, a preview, which includes every +The guides pin the **v0.1.0a11 alpha** release, a preview, which includes every feature they describe, such as saved platforms, REST calls without code, and the Studio editor. When a guide shows how to work with an alpha6 or earlier client or server, it says so. diff --git a/docs/architecture.md b/docs/architecture.md index 9b584eb3..9ce88833 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -233,9 +233,10 @@ health probes, signed webhooks and provider ingress endpoints (which verify the sender by their own rules), and the interactive API documentation when it is enabled. Services enforce scoped authorization even when they are called without HTTP. The local platform uses Keycloak; a deployment can trust another OIDC -provider through `WEAVE_OIDC_PROVIDERS`. Only the local Keycloak setup has been -verified against a real provider, and the built-in verifier has a -[known limitation with Microsoft Entra ID](operations/identity-and-secrets.md#microsoft-entra-id-not-verified). +provider through `WEAVE_OIDC_PROVIDERS`. Real-provider checks cover local +Keycloak sign-in and Microsoft Entra ID application tokens in Azure +preproduction. Entra browser and device-code sign-in for people remain +[unverified](operations/identity-and-secrets.md#microsoft-entra-id-human-sign-in-not-verified). **Persistence.** The [unit of work](../src/firefly_weave/persistence/uow.py) binds the tenant context inside a PostgreSQL transaction. Repositories use that diff --git a/docs/capabilities.md b/docs/capabilities.md index 823ea512..34b82d2c 100644 --- a/docs/capabilities.md +++ b/docs/capabilities.md @@ -51,7 +51,7 @@ permissions, and real delivery still need checking in your deployment. ## Which release this page describes Weave is an alpha workflow and integration platform. This branch prepares release -**`0.1.0a10`**, with PyFly 26.9.15 and database schema revision +**`0.1.0a11`**, with PyFly 26.9.15 and database schema revision `0028_files`; published packages are on [GitHub Releases](https://github.com/fireflyframework/firefly-weave/releases). It includes [Studio](guides/studio.md), [human tasks and operator @@ -70,8 +70,8 @@ releases do not have. Alpha8 adds three migrations; see the | [Files](guides/files.md) | New in alpha8: scoped, resumable transfer API, SDK/CLI helpers, Studio fields and human-task attachments | PostgreSQL lease/claim/retention checks; checksum and chunk tests; Studio browser tests | Not applicable to platform storage | 25 MiB per file; content stored in PostgreSQL; no automatic abandoned-upload cleanup | | [File integrations](guides/file-connectors.md) | FTP, FTPS, SFTP, SharePoint/OneDrive and Google Drive workers | Real local FTP/FTPS/SFTP servers; simulated Graph and Drive responses | Microsoft and Google accounts not exercised | Six explicit operations; no standalone change-feed trigger yet | | [Decision tables](reference/decision-tables.md) | Versioned decision definitions and a dedicated workflow step | Compiler, API and PostgreSQL execution tests | Not applicable | Deterministic rule evaluation; no arbitrary expression execution | -| [AI tasks](guides/ai-workers.md) | Per-workflow model profiles executed by an independent Agentic worker | Real Agentic library with controlled model transport; PostgreSQL completion/replay and secret classification | No live model provider claimed | Exact operator model/endpoint policy; external requests can be ambiguous | -| [Lumi assistant](guides/lumi.md) | Separate environment profile and private gateway; opt-in context and reviewed Studio draft proposals | API authorization tests; 7-size Studio browser checks | No live model provider claimed | No autonomous publish, activation, or execution; conversation stays in memory | +| [AI tasks](guides/ai-workers.md) | Per-workflow model profiles executed by an independent Agentic worker | Real Agentic library with controlled model transport; PostgreSQL completion/replay and secret classification | Azure OpenAI workflow completed on alpha10 through an independent Agentic worker; accepted result and consistent replay checked | Exact operator model/endpoint policy; external requests can be ambiguous | +| [Lumi assistant](guides/lumi.md) | Separate environment profile and private gateway; opt-in context and reviewed Studio draft proposals | API authorization tests; 7-size Studio browser checks | Azure OpenAI response through the separate Lumi gateway on alpha10; installed alpha10 Studio configuration readback against Azure preproduction | No autonomous publish, activation, or execution; conversation stays in memory | | [Compiler and schemas](reference/compiler.md) | Implemented | Compiler, schema, expression, and canonical-artifact suites | Not applicable | Validation without a catalog is partial and produces no artifact | | [Definition lifecycle](reference/api.md) | Implemented | Publication, activation, revision, and scoped API suites | Not applicable | Compiling is separate from authorization and admission | | [Durable runtime](reference/schedules-and-timers.md) | Implemented | PostgreSQL, lease, wait, signal, parallel, schedule, and recovery scenarios | Not applicable | External effects can repeat after a crash | @@ -79,11 +79,11 @@ releases do not have. Alpha8 adds three migrations; see the | [Execution management](guides/execution-management.md) | Implemented | Run lifecycle scenarios: search by business key, archive, restore, and purge | Not applicable | Purge needs an archived, finished run and a separate permission | | [Workers](reference/worker-protocol.md) | Implemented | Native and remote worker protocol scenarios | Not applicable | Release identity and scoped grants must be provisioned | | [Simulation](reference/simulation.md), [history and replay](reference/history-and-replay.md), [incidents](reference/incident-operations.md) | Implemented | Mock simulation and durable evidence and control scenarios | Not applicable | Replay can report incomplete evidence; simulation never calls providers | -| [Studio](guides/studio.md) in the browser | Implemented; the connection steps, saved platforms, and the redesigned editor are **new in 0.1.0a7** | Unit tests; browser tests against a mocked platform API and a real local host; an opt-in browser test against a local platform and its Keycloak on macOS (connect, sign in, renew, switch account, sign out, and a REST call built in Studio) | Other identity providers, and platforms other than the local one | Studio is a client: it grants nothing, and pairing is not a sign-in | +| [Studio](guides/studio.md) in the browser | Implemented; the connection steps, saved platforms, and the redesigned editor are **new in 0.1.0a7** | Unit tests; browser tests against a mocked platform API and a real local host; an opt-in browser test against a local platform and its Keycloak on macOS (connect, sign in, renew, switch account, sign out, and a REST call built in Studio) | Installed alpha10 AI setup against Azure preproduction using an application identity; interactive Entra human sign-in not exercised | Studio is a client: it grants nothing, and pairing is not a sign-in | | [Studio desktop](guides/desktop.md) | Implemented for macOS, Windows, and Linux targets | Native shell and host unit tests; exports checked in a macOS WebKit test harness; a locally built macOS app against the local Keycloak 26.7.4: sign-in with a code, reconnection after a restart, and **Save to file** | Browser sign-in from the app and the DMG not verified; not run on Windows or Linux | macOS bundles are ad-hoc signed, not notarized; Windows installers are unsigned | | [Saved platforms and CLI sign-in](guides/connect-to-api.md) | **New in 0.1.0a7**: `weave auth setup`, saved platforms shared by the CLI, Studio, and desktop app | A real run against the local Keycloak, keeping tokens in a private credential file; Studio's opt-in browser test and the locally built macOS app used the macOS Keychain | Windows Credential Locker, Secret Service, and KWallet were not exercised end to end; they are covered only by unit tests with simulated backends | Saved platforms hold no secrets; a sign-in alone grants no access | | [Keycloak identity](operations/identity-and-secrets.md#local-keycloak-development) | Implemented, including published sign-in settings for the CLI and Studio | Owned Keycloak 26.7.4: CLI browser sign-in with PKCE and device sign-in, renewal with refresh-token rotation, revocation, unlinked and no-access accounts, local authorization scenarios | No customer realm certification; in the desktop app, only sign-in with a code was verified | Explicit identity links and local grants remain required | -| [Generic OIDC / Entra ID](operations/identity-and-secrets.md#provider-notes) | Configurable token verification and published sign-in settings; provider-neutral ports and claim mapping present | Local contract coverage with simulated providers | Entra ID and other CIAM not verified; signing keys without `alg`, as Entra publishes them, are accepted by key type, which only unit tests cover | No automatic provisioning, group-overage expansion, or provider portability guarantee | +| [Generic OIDC / Entra ID](operations/identity-and-secrets.md#provider-notes) | Configurable token verification and published sign-in settings; provider-neutral ports and claim mapping present | Local contract coverage with simulated providers | Real Entra application tokens verified for a host application and independent Agentic worker in Azure preproduction; Entra human browser/device sign-in and other CIAM remain unverified | No automatic provisioning, group-overage expansion, or provider portability guarantee | | [REST calls without code](connectors/http-without-code.md) | **New in 0.1.0a7**: `weave connector http-action`, `import-openapi --target builtin`, guided `weave connections create`, and Studio's API action builder, on the built-in `weave-http@2.0.0` | Offline Action and import checks, compile-time profile checks, and the guide's local platform example; the guide states what ran end to end | No commercial API account contacted | One JSON operation over HTTPS per Action; only the connection's listed origins; private networks refused unless an operator allows them | | [Local platform](guides/local-platform.md) (`weave platform`) | Implemented; `user`, `integrations`, and `secret` are **new in 0.1.0a7** | Runs on macOS with a local Docker engine and Keycloak 26.7.4 | Not applicable | Development only, on macOS or Linux with a Unix-socket Docker context | | [HTTP and webhooks](reference/http-and-webhooks.md) | Implemented | Bounded transport, signed ingress, and owned endpoint scenarios | Not applicable to arbitrary destinations | Egress and scoped credential policy apply | @@ -98,7 +98,7 @@ releases do not have. Alpha8 adds three migrations; see the | [Telegram webhook text](connectors/telegram.md) | Implemented | Local TLS fixtures and owned PostgreSQL; composed provider gate passed | Not run | Source-local deduplication; bot and group permissions are provider prerequisites | | [Operational limits](operations/configuration.md), [telemetry](operations/observability.md), [retention](operations/retention.md), and [compatibility](operations/upgrades.md) | Implemented | Policy, accounting, contention, telemetry, retention, and upgrade suites | Not applicable | Logical accounting is separate from physical storage; compatibility checks gate readiness | | [Deployment](operations/deployment.md), [backup and restore](operations/backup-restore.md), and distribution | Implemented | Installed-package, container, process recovery, restore, and queue suites | Not applicable | Restore ownership, grants, schema compatibility, and external systems must be checked in each environment | -| [AWS, Azure, and GCP deployment recipes](operations/cloud-deployment.md) | Reference guides and Kubernetes manifests | Source review and offline Kubernetes object-shape validation | Not run | Operator-provisioned infrastructure; database migrations, identity, networking, and recovery need acceptance in the target | +| [AWS, Azure, and GCP deployment recipes](operations/cloud-deployment.md) | Reference guides and Kubernetes manifests | Source review and offline Kubernetes object-shape validation | A separate Azure Container Apps deployment has been exercised; these Kubernetes recipes and AWS/GCP remain unverified | Operator-provisioned infrastructure; database migrations, identity, networking, and recovery need acceptance in the target | | Slack and Salesforce | Deferred | Not run | Not run | Not part of this delivery | ## What is not included diff --git a/docs/diagrams/shared-ai-context.svg b/docs/diagrams/shared-ai-context.svg new file mode 100644 index 00000000..43eb6e25 --- /dev/null +++ b/docs/diagrams/shared-ai-context.svg @@ -0,0 +1,53 @@ + + + diff --git a/docs/guides/ai-workers.md b/docs/guides/ai-workers.md index 84001bd1..b29d1a57 100644 --- a/docs/guides/ai-workers.md +++ b/docs/guides/ai-workers.md @@ -27,7 +27,7 @@ Use [Lumi](lumi.md) when *you*, the person using Studio, want an explanation or a proposed definition change. Lumi has separate configuration and does not execute workflow AI tasks. -The examples here use Weave **0.1.0a10** and the **0.1.2 Agentic worker package**, +The examples here use Weave **0.1.0a11** and the **0.1.3 Agentic worker package**, whose core dependency is pinned to that Weave version. The catalog references below retain their own `1.0.0` definition and task versions. @@ -213,18 +213,26 @@ available from **Connections** and the AI task inspector. You need `connection.manage` in the environment. If the provider Connector is not yet published, the form explains the prerequisite; an author cannot bypass it. -1. Enter a **Connection name** that identifies the intended account or purpose. -2. Choose **Provider** and enter its approved **Provider endpoint**. For an Azure - provider, also enter the explicit **Azure API version**. The model or Azure - deployment name belongs in the workflow profile, not this connection form. -3. Enter the **API key secret handle** supplied by the operator. This field takes - a handle, never the raw API key. -4. Select **Create AI connection**. Studio restricts allowed destinations to the - endpoint's exact HTTPS origin. The operator's worker policy must also permit - that endpoint. -5. Record the created connection and revision. The platform checked its - configuration; no model request was sent. Complete the worker release and - credential grants before binding it to an executable workflow. +Studio alpha11 guides this setup through three steps. Alpha10 presents the +same fields in a single form. + +1. **Provider:** enter a **Connection name** that identifies the intended account + or purpose, choose **Provider**, and select **Continue**. The model or Azure + deployment name belongs in the workflow profile. +2. **Access:** copy the exact operator-approved **Provider endpoint**. For Azure, + also enter the explicit **Azure API version**. Enter the **API key secret + handle** supplied by the operator, never the raw API key, then select + **Review connection**. The Azure endpoint hint has no trailing slash; copy + the approved endpoint exactly rather than inventing a different spelling. +3. **Review:** check the name, provider, endpoint, API version when applicable, + and secret handle. **Back** preserves these details so you can correct them. + Select **Create AI connection** only when they are ready. Earlier steps do + not create a connection or send a model request. +4. Record the created connection and revision. Studio restricts allowed + destinations to the endpoint's HTTPS origin, and the operator's worker policy + must also permit the endpoint. The platform checked configuration, not live + provider connectivity. Complete worker release and credential grants before + binding it to an executable workflow. For API clients, create a connection for the published provider Connector with this configuration: @@ -405,6 +413,12 @@ The platform integration tests additionally activate the canonical catalog, claim a real database-backed task, enforce the pinned credential grant, and verify completion, output guards, replay, and classified-result rejection. +A separate Azure preproduction check on alpha10 used real Microsoft Entra ID +application tokens and an independently deployed Agentic worker to complete an +Azure OpenAI workflow. Its accepted result replayed consistently. This verifies +that configured deployment and model path; it does not certify other providers, +models, environments, or interactive Entra sign-in for people. + ## Check readiness one layer at a time | What you see | What to check next | @@ -416,5 +430,9 @@ verify completion, output guards, replay, and classified-result rejection. | The task waits without being claimed | Check that the independently deployed worker is running, authenticated, and has capacity for its admitted release. | | The call fails with a safe LLM error | Check the allowed model/endpoint, provider access, output contract, and configured budgets. A generic connection test does not validate remote provider credentials. | +To pass results between AI steps in one workflow execution, follow +[Share context between AI steps](shared-ai-context.md). Context is explicit +workflow data; it is not a persistent conversation shared by unrelated runs. + For assistance while editing, continue with [Lumi](lumi.md). Enabling Lumi is a separate setup; it neither starts this worker nor changes any workflow profile. diff --git a/docs/guides/connect-to-api.md b/docs/guides/connect-to-api.md index 3959bbd8..f37878c6 100644 --- a/docs/guides/connect-to-api.md +++ b/docs/guides/connect-to-api.md @@ -71,8 +71,9 @@ to the CLI that started it), sign-in with a code (device flow), silent renewal, switching account, an account the platform does not know, an account without a workspace, several saved platforms, and sign-out with revocation. That run kept its tokens in a [private credential file](#what-is-saved-and-where), not in a -system credential store. Microsoft Entra ID and other identity providers have -not been verified; see +system credential store. Entra application tokens have separately been verified +in Azure preproduction; Entra human sign-in and other identity providers remain +unverified. See [Use Microsoft Entra ID or another identity provider](#use-microsoft-entra-id-or-another-identity-provider). ## Choose how you connect @@ -842,15 +843,18 @@ release. ## Use Microsoft Entra ID or another identity provider -**Not verified.** Only the local platform's Keycloak 26.7.4 has been tested end -to end. Treat everything else as configuration guidance, and test with one -account before you roll out. Your administrator configures the server side by +**Human sign-in remains unverified for Entra ID.** Browser and device-code +sign-in have been tested end to end against the local platform's Keycloak +26.7.4. Separate Azure preproduction checks verified Entra application tokens +for a host application and an independent worker; these do not verify a +person's interactive sign-in. Test with one account before you roll out. Your administrator configures the server side by following [Use your own identity provider](../operations/identity-and-secrets.md#use-your-own-identity-provider). For **Microsoft Entra ID**, read -[Microsoft Entra ID (not verified)](../operations/identity-and-secrets.md#microsoft-entra-id-not-verified) -first. The built-in token verifier accepts Entra's signing keys, but no Entra -token has been verified yet, so try it with one account first. +[Microsoft Entra ID (human sign-in not verified)](../operations/identity-and-secrets.md#microsoft-entra-id-human-sign-in-not-verified) +first. The built-in token verifier has accepted real Entra application tokens; +the human account, consent, browser/device flow, refresh, and sign-out paths +still need their own acceptance checks. Whatever the provider, the CLI checks these points while it connects and signs in. Each failure has its own support code: diff --git a/docs/guides/desktop.md b/docs/guides/desktop.md index 75237a0e..28951607 100644 --- a/docs/guides/desktop.md +++ b/docs/guides/desktop.md @@ -44,31 +44,31 @@ start them: ## Choose an installer Choose a matching installer **actually attached** to the -[v0.1.0a10 release](https://github.com/fireflyframework/firefly-weave/releases/tag/v0.1.0a10). -The desktop product version is `0.1.0-alpha.10`; its bundled Python host is -`0.1.0a10`. macOS bundles use **ad-hoc signing** for resource integrity; they are +[v0.1.0a11 release](https://github.com/fireflyframework/firefly-weave/releases/tag/v0.1.0a11). +The desktop product version is `0.1.0-alpha.11`; its bundled Python host is +`0.1.0a11`. macOS bundles use **ad-hoc signing** for resource integrity; they are **not Developer ID signed and not notarized**. Windows installers remain unsigned. Build and frozen-host smoke checks do not establish interactive GUI testing on every operating system. Your organization's installation policy still applies. | Computer | Target | Installer filename | | --- | --- | --- | -| macOS Apple silicon | `aarch64-apple-darwin` | `firefly-weave-studio-0.1.0-alpha.10-aarch64-apple-darwin.dmg` | -| macOS Intel | `x86_64-apple-darwin` | `firefly-weave-studio-0.1.0-alpha.10-x86_64-apple-darwin.dmg` | -| Windows x64 | `x86_64-pc-windows-msvc` | `firefly-weave-studio-0.1.0-alpha.10-x86_64-pc-windows-msvc.exe` or `.msi` | -| Linux x64 | `x86_64-unknown-linux-gnu` | `firefly-weave-studio-0.1.0-alpha.10-x86_64-unknown-linux-gnu.deb` or `.AppImage` | +| macOS Apple silicon | `aarch64-apple-darwin` | `firefly-weave-studio-0.1.0-alpha.11-aarch64-apple-darwin.dmg` | +| macOS Intel | `x86_64-apple-darwin` | `firefly-weave-studio-0.1.0-alpha.11-x86_64-apple-darwin.dmg` | +| Windows x64 | `x86_64-pc-windows-msvc` | `firefly-weave-studio-0.1.0-alpha.11-x86_64-pc-windows-msvc.exe` or `.msi` | +| Linux x64 | `x86_64-unknown-linux-gnu` | `firefly-weave-studio-0.1.0-alpha.11-x86_64-unknown-linux-gnu.deb` or `.AppImage` | Download the chosen installer and its target's checksum inventory, `weave-studio-TARGET-SHA256SUMS`, from that same release. The matrix describes filenames, not a promise that every asset is already available. If your matching -asset is absent, use the [browser installation](studio.md#install-the-alpha10-browser-application) +asset is absent, use the [browser installation](studio.md#install-the-alpha11-browser-application) instead. Alpha4 Python releases do not contain Studio or desktop installers. **Do not use the alpha5 macOS installers.** Their outer application bundle lacked its resource seal, causing macOS to report that the application was damaged. Alpha6 added explicit ad-hoc bundle signing and a strict verification gate for both -the built application and the application enclosed in its DMG, and alpha10 keeps -them. Download the matching alpha10 asset rather than attempting to bypass the +the built application and the application enclosed in its DMG, and alpha11 keeps +them. Download the matching alpha11 asset rather than attempting to bypass the alpha5 failure. Ad-hoc integrity does not establish publisher trust or Gatekeeper acceptance. @@ -110,9 +110,9 @@ This follows Tauri's [sidecar model](https://v2.tauri.app/develop/sidecar/) and ```sh # Inspect the downloaded installer without opening it. cd ~/Downloads - shasum -a 256 firefly-weave-studio-0.1.0-alpha.10-aarch64-apple-darwin.dmg + shasum -a 256 firefly-weave-studio-0.1.0-alpha.11-aarch64-apple-darwin.dmg # Show the expected digest for this exact filename. - grep 'firefly-weave-studio-0.1.0-alpha.10-aarch64-apple-darwin.dmg$' weave-studio-aarch64-apple-darwin-SHA256SUMS + grep 'firefly-weave-studio-0.1.0-alpha.11-aarch64-apple-darwin.dmg$' weave-studio-aarch64-apple-darwin-SHA256SUMS ``` Both displayed digests must match. For Intel, replace `aarch64-apple-darwin` @@ -149,9 +149,9 @@ matching `weave-studio-x86_64-pc-windows-msvc-SHA256SUMS` inventory first. ```powershell # Inspect the downloaded EXE before running it. Set-Location "$HOME\Downloads" -Get-FileHash .\firefly-weave-studio-0.1.0-alpha.10-x86_64-pc-windows-msvc.exe -Algorithm SHA256 +Get-FileHash .\firefly-weave-studio-0.1.0-alpha.11-x86_64-pc-windows-msvc.exe -Algorithm SHA256 # Compare the digest with the line for this exact filename. -Select-String -Path .\weave-studio-x86_64-pc-windows-msvc-SHA256SUMS -Pattern 'firefly-weave-studio-0.1.0-alpha.10-x86_64-pc-windows-msvc.exe$' +Select-String -Path .\weave-studio-x86_64-pc-windows-msvc-SHA256SUMS -Pattern 'firefly-weave-studio-0.1.0-alpha.11-x86_64-pc-windows-msvc.exe$' ``` Expected: `Get-FileHash` prints a `Hash` value, and `Select-String` prints the @@ -159,8 +159,8 @@ inventory line for the same file. For MSI, substitute `.msi` in both commands. Compare the two digests without regard to letter case; stop on a mismatch. Double-click the verified installer, complete its setup, then open **Firefly Weave Studio** from the Start menu. The installer may need network access to provision WebView2. Unsigned-installation warnings remain -subject to your organization's policy. The MSI's internal version is `0.1.10`, a -monotonic Windows Installer counter; the displayed product remains alpha10. +subject to your organization's policy. The MSI's internal version is `0.1.11`, a +monotonic Windows Installer counter; the displayed product remains alpha11. ## Install on Linux @@ -171,8 +171,8 @@ application where your distribution supports its runtime. Download the matching ```sh # Enter the download directory, verify this exact file, then install only on success. cd ~/Downloads && - grep 'firefly-weave-studio-0.1.0-alpha.10-x86_64-unknown-linux-gnu.deb$' weave-studio-x86_64-unknown-linux-gnu-SHA256SUMS | sha256sum --check && - sudo apt install ./firefly-weave-studio-0.1.0-alpha.10-x86_64-unknown-linux-gnu.deb + grep 'firefly-weave-studio-0.1.0-alpha.11-x86_64-unknown-linux-gnu.deb$' weave-studio-x86_64-unknown-linux-gnu-SHA256SUMS | sha256sum --check && + sudo apt install ./firefly-weave-studio-0.1.0-alpha.11-x86_64-unknown-linux-gnu.deb ``` Expected: `sha256sum` prints the file name followed by `OK`, and only then does @@ -182,9 +182,9 @@ application launcher. For AppImage: ```sh # Verify this exact portable file; a failed or missing checksum prevents launch. cd ~/Downloads && - grep 'firefly-weave-studio-0.1.0-alpha.10-x86_64-unknown-linux-gnu.AppImage$' weave-studio-x86_64-unknown-linux-gnu-SHA256SUMS | sha256sum --check && - chmod +x firefly-weave-studio-0.1.0-alpha.10-x86_64-unknown-linux-gnu.AppImage && - ./firefly-weave-studio-0.1.0-alpha.10-x86_64-unknown-linux-gnu.AppImage + grep 'firefly-weave-studio-0.1.0-alpha.11-x86_64-unknown-linux-gnu.AppImage$' weave-studio-x86_64-unknown-linux-gnu-SHA256SUMS | sha256sum --check && + chmod +x firefly-weave-studio-0.1.0-alpha.11-x86_64-unknown-linux-gnu.AppImage && + ./firefly-weave-studio-0.1.0-alpha.11-x86_64-unknown-linux-gnu.AppImage ``` Linux requires the distribution's WebKitGTK runtime, and AppImage execution may @@ -479,7 +479,7 @@ with a text editor. **Untested platform cases.** On macOS 11.0 to 11.2 the webview lacks the download support the app relies on, so an export may save nothing even though the confirmation appears; use macOS 11.3 or later, or the -[browser installation](studio.md#install-the-alpha10-browser-application). macOS +[browser installation](studio.md#install-the-alpha11-browser-application). macOS may ask whether Firefly Weave Studio can use your Downloads folder the first time you export. On Windows, WebView2 may ask whether to allow the second of the two files. @@ -633,8 +633,8 @@ source checkout, you can run that same gate on an explicitly downloaded DMG: ```sh # Verify resource integrity without launching the application. -# Replace the path with the actual alpha10 installer you downloaded. -.venv/bin/python desktop/scripts/verify_macos_bundle.py /path/to/firefly-weave-studio-0.1.0-alpha.10-aarch64-apple-darwin.dmg +# Replace the path with the actual alpha11 installer you downloaded. +.venv/bin/python desktop/scripts/verify_macos_bundle.py /path/to/firefly-weave-studio-0.1.0-alpha.11-aarch64-apple-darwin.dmg ``` The build also smoke-tests the frozen host after Tauri signs it. Hardened runtime diff --git a/docs/guides/learning-path.md b/docs/guides/learning-path.md index 010a2dff..84ff9357 100644 --- a/docs/guides/learning-path.md +++ b/docs/guides/learning-path.md @@ -65,7 +65,7 @@ have what you need. One person often has several roles, especially on a laptop. [Who does what](roles-and-lifecycle.md) explains the roles and the permissions each one needs. -**Every path starts with the v0.1.0a10 release.** [Install the CLI](../installation.md) +**Every path starts with the v0.1.0a11 release.** [Install the CLI](../installation.md) first. The release includes everything these paths use: the Studio editor and its API action builder, saved platforms (`weave auth setup`), REST calls without code, and `weave platform user`. @@ -75,7 +75,7 @@ code, and `weave platform user`. You draw processes, add approvals and API calls, and run them. **What you need:** the CLI and -[Studio's browser application](studio.md#install-the-alpha10-browser-application), +[Studio's browser application](studio.md#install-the-alpha11-browser-application), or the [desktop app](desktop.md), and, from step 4 on, a platform: your team's server address and an account, or a [local platform](local-platform.md), which needs Docker. @@ -84,7 +84,7 @@ needs Docker. | --- | --- | --- | | 1 | [Concepts](../concepts.md), including [Coming from BPM/BPMN](../concepts.md#coming-from-bpmbpmn) | The vocabulary: workflow, step, activation, run, and how BPMN ideas map to them | | 2 | [Your first workflow](../quickstart.md) | A workflow validated and simulated on your computer, with no platform | -| 3 | [Install Studio](studio.md#install-the-alpha10-browser-application), then [draw your first workflow](studio.md#try-it-draw-your-first-workflow) | A process drawn in the visual editor and checked as you edit | +| 3 | [Install Studio](studio.md#install-the-alpha11-browser-application), then [draw your first workflow](studio.md#try-it-draw-your-first-workflow) | A process drawn in the visual editor and checked as you edit | | 4 | [Start a local platform](local-platform.md), its steps 1 to 8, or [connect Studio](studio.md#connect-to-a-platform) to your team's platform | A platform where you can publish, run, and approve; on the local platform, create your person with every role, as its step 5 explains | | 5 | [Step reference](studio-step-reference.md) | The right properties for each kind of step | | 6 | [Human tasks](human-tasks.md) | An approval assigned to real reviewers; a task manager creates the reviewer binding with the CLI | @@ -116,8 +116,9 @@ You install the platform, configure sign-in, and give people access. **What you need:** the CLI and Docker to practise locally; later, a cloud account or a Kubernetes cluster, your identity provider's administration, and a database administrator. **Planning Microsoft Entra ID?** It has -configuration guidance but has not been verified yet; -[read the requirements](../operations/identity-and-secrets.md#microsoft-entra-id-not-verified) +verified application-token checks in Azure preproduction, but browser and +device-code sign-in for people remain unverified; +[read the requirements](../operations/identity-and-secrets.md#microsoft-entra-id-human-sign-in-not-verified) before you deploy. | Step | Read | You finish with | diff --git a/docs/guides/local-platform.md b/docs/guides/local-platform.md index 310c1682..268eaf06 100644 --- a/docs/guides/local-platform.md +++ b/docs/guides/local-platform.md @@ -79,8 +79,8 @@ decides which features the platform has. With the alpha7 CLI from directory, and keep any checkout you already use for development untouched: ```sh -# Download the alpha10 release's operator files into a new directory. -git clone --branch v0.1.0a10 --single-branch https://github.com/fireflyframework/firefly-weave.git firefly-weave-local +# Download the alpha11 release's operator files into a new directory. +git clone --branch v0.1.0a11 --single-branch https://github.com/fireflyframework/firefly-weave.git firefly-weave-local # Run the following steps from that matching checkout. cd firefly-weave-local ``` @@ -345,7 +345,7 @@ Studio opens already connected to the platform you saved in step 6. **First install Studio's browser application** if you have not yet: download the matching alpha7 bundle and install it as in -[Install the alpha10 browser application](studio.md#install-the-alpha10-browser-application). +[Install the alpha11 browser application](studio.md#install-the-alpha11-browser-application). Then start Studio: ```sh diff --git a/docs/guides/lumi.md b/docs/guides/lumi.md index 07ea3226..c9e417e3 100644 --- a/docs/guides/lumi.md +++ b/docs/guides/lumi.md @@ -29,7 +29,7 @@ Lumi has its own configuration per environment. It never reads a workflow's `llmProfiles`, and changing an LLM step does not change the assistant. The Studio **AI setup** examples and named provider-connection selection -shown here use Weave **0.1.0a10**. Use the matching **0.1.2 Agentic worker +shown here use Weave **0.1.0a11**. Use the matching **0.1.3 Agentic worker package** for the independently deployed Lumi gateway. ## Follow a question through review @@ -178,16 +178,19 @@ separate from the administrator's editable environment Lumi configuration. 1. Open **Settings → AI setup → Configure Lumi**, or open **Lumi settings** from the assistant. These settings belong to the current environment. -2. Choose the provider and an explicit model in the Lumi profile. For Azure, +2. In Studio alpha11, the **Model → Connection → Review** wizard + keeps changes local until **Save Lumi settings**. Alpha10 presents + these fields in a single form. Choose the provider and an explicit model. For Azure, supply the Azure deployment name. Set the model's token, call, and time limits; - Studio supplies the fixed reply schema. + Studio supplies the fixed reply schema. Select **Continue to connection**. 3. Choose **Provider connection**. The list displays the connection name and revision and filters for the selected provider. Lumi pins the exact revision, so a later connection revision does not silently change the assistant. 4. If needed, select **New AI connection** and follow the [provider connection steps](ai-workers.md#configure-the-provider-connection). Use **Refresh connections** to reload available choices. -5. Enable the assistant and select **Save Lumi settings**. Use a simple request +5. Select **Review settings**, check the model and pinned connection, then select + **Save Lumi settings**. **Back** preserves your draft. Use a simple request without attachments to confirm the complete path, as described [below](#confirm-setup-without-sharing-sensitive-source). @@ -275,6 +278,13 @@ prove future model availability or the correctness of every proposed definition. Then try an explicitly selected, nonsensitive draft and practice reviewing, validating, applying, and undoing one proposed workflow change. +A separate Azure preproduction check on alpha10 completed a real Azure OpenAI +request through the Lumi gateway. Installed alpha10 Studio was also used at +desktop and narrow widths to read back Lumi configuration using an application +identity. +These checks do not establish interactive Entra sign-in for people or prove +that every generated proposal is correct. + | Problem | Responsible next step | | --- | --- | | Lumi is unavailable | The administrator checks the environment configuration and `lumi.use` grant; the operator checks that the API has a configured gateway. | diff --git a/docs/guides/shared-ai-context.md b/docs/guides/shared-ai-context.md new file mode 100644 index 00000000..27a68b7f --- /dev/null +++ b/docs/guides/shared-ai-context.md @@ -0,0 +1,203 @@ + + +# Share context between AI steps + +Use shared AI context when a later model task needs an earlier model's accepted +answer. For example, one task summarizes a customer request and a later task +writes a reply using that summary. Both tasks belong to the **same workflow run**. + + + +[Open the diagram at full size](../diagrams/shared-ai-context.svg). + +## What “memory” means here + +Weave saves each successful step's validated output with its execution. A later +step reads that output through a reference such as +`/steps/summarize/output/result`. The reference resolves inside the current run; +it cannot address another run. This is explicit, structured context sharing. + +There is no implicit conversation transcript, background memory service, or +provider session shared between tasks. Each task starts a fresh bounded Agentic +invocation. The worker receives the prompt, the chosen context, and its pinned +model profile. Lumi conversations remain separate. + +| Setting | What it shares | +| --- | --- | +| The same workflow AI profile | Provider, model, result schema, and generation limits. It does not share answers. | +| A result selected in **Shared AI context** | An earlier AI step's accepted result, in this execution only. | +| A context expression | Precisely the workflow input or earlier output fields you select. | +| Lumi configuration | The Studio assistant's own provider and model. It does not add workflow memory. | + +## Configure it in Studio + +Start with a workflow containing two **AI task** steps in sequence, named +`summarize` and `write-reply`. Complete the [AI worker setup](ai-workers.md) +before expecting live model calls. + +1. Select `summarize`. Configure its workflow AI profile with the model, limits, + and expected result fields. Choose the AI connection slot and review the + configuration before applying it. +2. Give it a prompt such as “Summarize the request in one sentence.” Set its + context to the relevant workflow input. +3. Select `write-reply`. In **Shared AI context**, check **Use result from + summarize**. Only earlier AI results available on this execution path appear. +4. Write a prompt that names the context you are providing: “Draft a reply using + `sharedAiResults.summarize` and the instructions in `data`.” +5. Keep any additional input in the ordinary **Context** editor. When you select + a shared result, Studio preserves the existing expression under `data` and + places the selected results under `sharedAiResults`. +6. Validate the workflow. Publish, bind the connection slot during activation, + and start a run using the normal [CLI or Studio workflow](cli-tutorial.md). +7. Inspect the first task's accepted output and the second task's input in the + run details. Verify that only the intended context was sent. + +You can select up to 16 earlier AI results in the convenience picker. Unchecking +the last selection restores the original context expression. If a referenced +step is deleted or moved out of scope, Studio flags that unavailable result; +remove it or repair the workflow before running. The compiler remains the final +authority for scope, schema, classification, and payload limits. + +## Write the same workflow in YAML + +Save the following as `shared-ai-context.yaml`. Replace `approved-model` with a +model or deployment that your operator permits. This example needs the published +Agentic Action and Connector described in [AI workers](ai-workers.md). + +```yaml +apiVersion: weave/v1alpha1 +kind: Workflow +metadata: + name: shared-ai-context + version: 1.0.0 +spec: + inputSchema: + type: object + properties: + request: {type: string} + required: [request] + outputSchema: {type: string} + connections: + # Activation chooses an authorized connection revision for this slot. + ai: {connector: weave-agentic-provider@1.0.0} + llmProfiles: + writer: + provider: openai-chat + model: approved-model + options: {max_tokens: 256} + reasoning: {pattern: none} + maxCalls: 1 + timeoutSeconds: 60 + outputSchema: {type: string} + steps: + - id: summarize + kind: llm + uses: weave-agentic-generate@1.0.0 + profile: writer + connection: ai + prompt: {literal: "Summarize the supplied request in one sentence."} + context: {ref: /input/request} + - id: pause + kind: wait + # The summary stays in the run while the process waits. + durationSeconds: 10 + - id: write-reply + kind: llm + uses: weave-agentic-generate@1.0.0 + profile: writer + connection: ai + prompt: + literal: "Use sharedAiResults.summarize to draft a reply. Follow data." + context: + object: + # Keep ordinary task context alongside explicitly selected results. + data: {literal: "Use a concise, professional tone."} + sharedAiResults: + object: + summarize: {ref: /steps/summarize/output/result} + output: {ref: /steps/write-reply/output/result} +``` + +`data` and `sharedAiResults` are ordinary object keys, not new runtime APIs. The +Studio picker produces this expression shape so you can inspect and edit the +same definition in YAML, JSON, or Python. You can use a direct `ref` instead +when the task needs only one earlier result. + +## Use the Python SDK + +The SDK uses the same contracts. If `builder` is your existing +`WorkflowBuilder`, with a `writer` profile, an `ai` connection slot, and an +earlier `summarize` step, append the consumer this way: + +```python +from firefly_weave.contracts.definitions import ( + LLMStep, + LiteralExpression, + ObjectExpression, + RefExpression, +) + +# The builder is immutable: keep the returned updated workflow. +builder = builder.add_step( + LLMStep( + id="write-reply", + kind="llm", + uses="weave-agentic-generate@1.0.0", + profile="writer", + connection="ai", + prompt=LiteralExpression( + literal="Draft a reply using sharedAiResults.summarize and data." + ), + context=ObjectExpression( + object={ + "data": LiteralExpression(literal="Use a professional tone."), + "sharedAiResults": ObjectExpression( + object={ + "summarize": RefExpression( + ref="/steps/summarize/output/result" + ) + } + ), + } + ), + ) +) +``` + +See [the Python SDK](../reference/sdk.md) for constructing the builder and +publishing through the normal APIs. No separate memory endpoint or provider SDK +is needed in your product. + +## Understand pauses, retries, and branches + +- **Pauses and recovery:** accepted outputs belong to the persisted execution, + rather than worker process memory. Restarting a worker does not erase them. +- **Replay:** Weave uses accepted evidence. Replaying a completed step does not + call its model again. +- **Ambiguous provider failures:** a provider may charge for a request even when + its response is lost. Shared context does not provide exactly-once model calls. + Review incidents through the normal recovery controls. +- **Branches:** a step can read only values available on its execution path. It + cannot read a future step or a concurrent sibling's incomplete result. Expose + branch outputs at the join when the next step needs them, then map those values + with the ordinary context editor. +- **Data boundaries:** choosing a result sends it to the consuming step's + provider, which may differ from the producing step's provider. Share only the + necessary fields. Normal schema, secret classification, and size limits still + apply; there is no bypass for AI context. diff --git a/docs/guides/standalone.md b/docs/guides/standalone.md index aa45b90b..c8f29f38 100644 --- a/docs/guides/standalone.md +++ b/docs/guides/standalone.md @@ -96,18 +96,18 @@ checkout. If you do not already have it, run: ```sh # Clone the alpha7 release that matches the CLI, then install its locked dependencies. -git clone --branch v0.1.0a10 --single-branch \ +git clone --branch v0.1.0a11 --single-branch \ https://github.com/fireflyframework/firefly-weave.git cd firefly-weave uv sync --locked --python 3.12 ``` -The clone selects the same **v0.1.0a10** release as the CLI installation guide. +The clone selects the same **v0.1.0a11** release as the CLI installation guide. A detached-HEAD message is expected when Git opens a release tag; this tutorial does not require creating a branch or editing application source. If you already have a checkout, enter its root and run `git describe --tags --exact-match`. -For this released walkthrough, the result must be `v0.1.0a10`. If the checkout has +For this released walkthrough, the result must be `v0.1.0a11`. If the checkout has another version or local development work, preserve it and clone the release into a separate directory by adding a new directory name to the clone command above. Contributors intentionally using unreleased source should use that checkout's diff --git a/docs/guides/studio-step-reference.md b/docs/guides/studio-step-reference.md index 8da55d8c..d44fc290 100644 --- a/docs/guides/studio-step-reference.md +++ b/docs/guides/studio-step-reference.md @@ -31,13 +31,13 @@ Studio writes the same versioned definition language that you can edit as YAML or build with the CLI and the Python SDK, so every choice here is visible in the **Source** tab. -**This page describes the Studio 0.1.0a10 editor.** The step kinds and native +**This page describes the Studio 0.1.0a11 editor.** The step kinds and native human tasks are also part of alpha6, but several controls described here, such as the canvas step picker, the searchable action picker, the **Value** / typed input rows with **Use data** and **Calculate…**, the schema designer, the API action builder, and the simulation setup and panel, are new in 0.1.0a7. An alpha6 or earlier browser bundle does not have them; to see the same screens, -[install the alpha10 browser application](studio.md#install-the-alpha10-browser-application). +[install the alpha11 browser application](studio.md#install-the-alpha11-browser-application). **How to use this page:** @@ -188,11 +188,32 @@ in the connected catalog. Select a **Workflow AI profile** and an **AI connectio slot**, then map **AI prompt** and **AI context** using Value, Data or Formula. Open **Configure workflow AI profiles** to create or edit a named profile. -Choose its provider and model explicitly, configure time and token limits, and -describe the expected result with the schema designer. Profile changes belong -to the workflow; select the profile on each AI task that should use it. Provider -credentials belong to an authorized connection, not the prompt or profile. -Workflow AI profiles are separate from Studio's Lumi assistant settings. +Studio alpha11 uses the same **Model → Connection → Review** structure as Lumi, +but saves only to this workflow. + +1. **Model:** choose the provider and model explicitly, configure time and token + limits, and describe the expected result with the schema designer. For Azure, + **Model** is the deployment name. Select **Continue to connection**. +2. **Connection:** choose the **AI connection slot**, or select **Add AI connection + slot** to include a new slot when you apply. An authorized administrator can + also open **New AI connection** to create an environment connection using an + operator-provisioned secret handle. Activation binds the slot to that + environment connection; this wizard does not activate the workflow. +3. **Review:** check the profile, provider, model, slot, and list of affected AI + steps. **Apply workflow AI settings** applies the profile, slot, and current + step's references together. **Back** keeps the draft; **Cancel profile + changes** discards unapplied profile edits. Existing named profiles affect + every step listed in the review. + +Use **Shared AI context** to select results from earlier AI steps available on +this path. Existing context stays under `data`; selected results appear under +`sharedAiResults`. This is structured data within one execution, not memory +shared between unrelated runs. The compiler enforces which prior results can be +read. See [Share context between AI steps](shared-ai-context.md) for a complete +example and the limits across branches, waits, and retries. + +Provider credentials belong to an authorized connection, not the prompt or +profile. Workflow AI profiles are separate from Studio's Lumi assistant settings. The [AI worker guide](ai-workers.md) covers deployment, supported providers, credential binding and execution limits. A configured inspector alone does not install the action or start a worker. diff --git a/docs/guides/studio.md b/docs/guides/studio.md index 6cf4fd72..0872d3a8 100644 --- a/docs/guides/studio.md +++ b/docs/guides/studio.md @@ -38,10 +38,10 @@ computer at `127.0.0.1`. That host keeps your saved platforms, which it shares with the `weave` command line, and keeps your sign-in in the operating system's credential store. The page never receives your tokens. -**This page describes Studio 0.1.0a10.** An alpha6 or earlier browser bundle +**This page describes Studio 0.1.0a11.** An alpha6 or earlier browser bundle shows an earlier connection assistant, which imports a login configuration file, and lacks the editor features and API actions described here. To follow this -page, [install the alpha10 browser application](#install-the-alpha10-browser-application). +page, [install the alpha11 browser application](#install-the-alpha11-browser-application).  @@ -55,7 +55,7 @@ happens on the platform and keeps running after you close Studio. | Your goal | What must be running | Start here | | --- | --- | --- | | Open Studio as a native desktop app | A matching desktop build for your operating system | [Install desktop](desktop.md) | -| Draw, import, or validate a workflow on your computer | Studio's local host; no account | [Install Studio](#install-the-alpha10-browser-application), then [work locally](#work-locally-without-signing-in) | +| Draw, import, or validate a workflow on your computer | Studio's local host; no account | [Install Studio](#install-the-alpha11-browser-application), then [work locally](#work-locally-without-signing-in) | | Learn the editor with a small example | Studio's local host | [Try it: draw your first workflow](#try-it-draw-your-first-workflow) | | Save and run workflows on your laptop | Studio plus a separate local Weave platform | [Start the platform](local-platform.md), then [connect Studio](#connect-to-a-platform) | | Work with your team's platform | Studio on your computer and the server address from your administrator | [Connect to a platform](#connect-to-a-platform) | @@ -71,45 +71,45 @@ computer. You can create, import, edit, and validate workflow definitions. Connect when you want to save them to a shared platform, run processes, or handle tasks. This status does not mean your computer has lost its internet connection. -## Install the alpha10 browser application +## Install the alpha11 browser application Alpha7 includes the Studio host. Its browser assets are an optional, matching release bundle; the Python wheel does not embed the Angular application. Alpha4 does not include Studio. Download all files from the same -[v0.1.0a10 release](https://github.com/fireflyframework/firefly-weave/releases/tag/v0.1.0a10). +[v0.1.0a11 release](https://github.com/fireflyframework/firefly-weave/releases/tag/v0.1.0a11). The CLI installer does not automatically fetch or install the Studio ZIP. -Use Python 3.12 or newer. The alpha10 CLI installer includes the Studio host +Use Python 3.12 or newer. The alpha11 CLI installer includes the Studio host and authentication dependencies, but downloads no browser ZIP automatically. These Bash/Zsh commands need neither Node nor a source checkout: ```sh # Install the pinned CLI into its isolated installation directory. # Review the installer first using the download-and-inspect alternative in Installation. -curl --fail --location https://github.com/fireflyframework/firefly-weave/releases/download/v0.1.0a10/install.sh \ - | sh -s -- --version v0.1.0a10 +curl --fail --location https://github.com/fireflyframework/firefly-weave/releases/download/v0.1.0a11/install.sh \ + | sh -s -- --version v0.1.0a11 # Make the installed command available in this terminal. export PATH="$HOME/.local/bin:$PATH" # Check that the host version matches the browser bundle you will install. weave --version # Keep the downloaded optional browser bundle and its digest together. -mkdir weave-studio-alpha10 -cd weave-studio-alpha10 -curl --fail --location --remote-name https://github.com/fireflyframework/firefly-weave/releases/download/v0.1.0a10/firefly-weave-studio-0.1.0a10.zip -curl --fail --location --remote-name https://github.com/fireflyframework/firefly-weave/releases/download/v0.1.0a10/firefly-weave-studio-0.1.0a10.zip.sha256 +mkdir weave-studio-alpha11 +cd weave-studio-alpha11 +curl --fail --location --remote-name https://github.com/fireflyframework/firefly-weave/releases/download/v0.1.0a11/firefly-weave-studio-0.1.0a11.zip +curl --fail --location --remote-name https://github.com/fireflyframework/firefly-weave/releases/download/v0.1.0a11/firefly-weave-studio-0.1.0a11.zip.sha256 # Verify the bundle on macOS. Stop if the check fails. -shasum -a 256 --check firefly-weave-studio-0.1.0a10.zip.sha256 +shasum -a 256 --check firefly-weave-studio-0.1.0a11.zip.sha256 # On Linux, use sha256sum --check in place of shasum -a 256 --check. # Install only the bundle whose version and verified digest match this host. -weave studio install --bundle firefly-weave-studio-0.1.0a10.zip \ - --sha256 "$(awk '{print $1}' firefly-weave-studio-0.1.0a10.zip.sha256)" +weave studio install --bundle firefly-weave-studio-0.1.0a11.zip \ + --sha256 "$(awk '{print $1}' firefly-weave-studio-0.1.0a11.zip.sha256)" # Start the local host without opening a browser automatically. weave studio --no-browser ``` -Expected: `weave --version` prints `Firefly Weave 0.1.0a10`, the checksum line +Expected: `weave --version` prints `Firefly Weave 0.1.0a11`, the checksum line ends with `OK`, and the install prints `Studio installed at PATH. Start it with: weave studio`. The host then prints `Firefly Weave Studio · Local authoring (no platform selected)`, or `Firefly Weave Studio · Platform: NAME` when a saved @@ -131,7 +131,7 @@ or the [remote deployment guide](../operations/remote-deployment.md). **This route is for contributors,** and for trying changes made after the latest release; the release bundle above already has everything this page -describes. To reproduce the alpha10 release exactly, check out `v0.1.0a10` +describes. To reproduce the alpha11 release exactly, check out `v0.1.0a11` instead; development `main` can differ from released assets. From the repository root, install the development dependencies first. Node 24 @@ -167,7 +167,7 @@ while you use Studio. **Already installed a release browser bundle?** Installed bundles are kept per version, and a checkout can report the same version as the latest release, for -example `0.1.0a10`. A plain `weave studio` then keeps serving the installed +example `0.1.0a11`. A plain `weave studio` then keeps serving the installed release screens, and `weave studio install` keeps that bundle instead of replacing it. Always start a source build with `--assets studio/dist/studio/browser`. diff --git a/docs/installation.md b/docs/installation.md index 65743ebf..857a9324 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -27,18 +27,18 @@ The installer puts the CLI in its own Python environment, so your applications' packages are never affected. It includes local authoring, the API client with sign-in support, OpenAPI import, and the host that runs Studio. Studio's browser application is a separate download; see the -[Studio guide](guides/studio.md#install-the-alpha10-browser-application). +[Studio guide](guides/studio.md#install-the-alpha11-browser-application). ## Choose the installation path -**Recommended:** install the pinned **v0.1.0a10 alpha** below. You do not need Git, +**Recommended:** install the pinned **v0.1.0a11 alpha** below. You do not need Git, a source checkout, Docker, or `sudo`. An alpha is a preview release: use it to evaluate Weave, and check the [current limits](capabilities.md). | Your situation | Start here | | --- | --- | | You want to write, check, and simulate workflows, connect to your team's platform by its address (`weave auth setup`), or call REST APIs without code | [Install a release](#install-a-release), then [check the result](#check-the-result) | -| You want the visual editor in your browser | [Install Studio](guides/studio.md#install-the-alpha10-browser-application) | +| You want the visual editor in your browser | [Install Studio](guides/studio.md#install-the-alpha11-browser-application) | | You want a native desktop app | [Desktop installation](guides/desktop.md) | | You contribute code, or want to try changes made after the release | [Install the current source](#install-the-current-source) | | You already have the CLI | [Upgrade or select another version](#installation-locations-and-upgrades) | @@ -89,8 +89,8 @@ explicitly: # Stop if downloading the installer fails. set -o pipefail curl --proto '=https' --tlsv1.2 -fsSL \ - https://github.com/fireflyframework/firefly-weave/releases/download/v0.1.0a10/install.sh \ - | sh -s -- --version v0.1.0a10 + https://github.com/fireflyframework/firefly-weave/releases/download/v0.1.0a11/install.sh \ + | sh -s -- --version v0.1.0a11 ) ``` @@ -100,7 +100,7 @@ environment; and tests the new command before it makes it available. The first installation can take several minutes. No services start and no cloud resources are created. -Expected, at the end: `Installed Firefly Weave 0.1.0a10: PATH`, then `Run: PATH +Expected, at the end: `Installed Firefly Weave 0.1.0a11: PATH`, then `Run: PATH --help`, where `PATH` is the new command (by default `~/.local/bin/weave`). When that directory is not on your `PATH`, the installer also prints the `export` line to add. The last line says where earlier environments are kept for @@ -112,7 +112,7 @@ instead: ```sh # Download the installer to a file instead of running it directly. curl --proto '=https' --tlsv1.2 -fsSL \ - https://github.com/fireflyframework/firefly-weave/releases/download/v0.1.0a10/install.sh \ + https://github.com/fireflyframework/firefly-weave/releases/download/v0.1.0a11/install.sh \ -o weave-install.sh ``` @@ -121,7 +121,7 @@ editor, then run it: ```sh # Install the same pinned release with the reviewed file. -sh weave-install.sh --version v0.1.0a10 +sh weave-install.sh --version v0.1.0a11 ``` Expected: the same output as above. Keep the file if you want to reuse it for @@ -147,7 +147,7 @@ weave version --output json weave docs platform ``` -Expected: `Firefly Weave 0.1.0a10`; the help with its command groups and +Expected: `Firefly Weave 0.1.0a11`; the help with its command groups and examples; one JSON object with `version`, `apiVersion`, and `irVersion`; and the address of the platform guide. The Firefly banner appears only in the main help; it never appears in command results or JSON output. @@ -183,7 +183,7 @@ remove or move the Python interpreter the environment was built with. ### Select a version or release channel -The explicit `--version v0.1.0a10` makes an installation repeatable. To upgrade, +The explicit `--version v0.1.0a11` makes an installation repeatable. To upgrade, use the installer URL and `--version` value of the new release shown on [GitHub Releases](https://github.com/fireflyframework/firefly-weave/releases). Tags start with `v`; `weave --version` shows the package version without it. @@ -192,7 +192,7 @@ With a downloaded `weave-install.sh`, you can select a channel instead: | Command | What it installs | | --- | --- | -| `sh weave-install.sh --version v0.1.0a10` | Exactly this documented alpha | +| `sh weave-install.sh --version v0.1.0a11` | Exactly this documented alpha | | `sh weave-install.sh --prerelease` | The most recently published release, including alpha previews | | `sh weave-install.sh` | The latest stable release only | @@ -236,7 +236,7 @@ removal option: # Stop if downloading the installer fails. set -o pipefail curl --proto '=https' --tlsv1.2 -fsSL \ - https://github.com/fireflyframework/firefly-weave/releases/download/v0.1.0a10/install.sh \ + https://github.com/fireflyframework/firefly-weave/releases/download/v0.1.0a11/install.sh \ | sh -s -- --uninstall ) ``` @@ -257,7 +257,7 @@ delete them yourself if you want no trace. | What you see | Why | What to do | | --- | --- | --- | | A Python version or `venv` error | The selected Python is older than 3.12, or lacks `venv` | Set `WEAVE_INSTALL_PYTHON` to Python 3.12 or newer; install your distribution's `venv` package | -| No installable release was found | You asked for the latest stable release, and only alphas exist | Run the pinned `v0.1.0a10` command above, or add `--prerelease` | +| No installable release was found | You asked for the latest stable release, and only alphas exist | Run the pinned `v0.1.0a11` command above, or add `--prerelease` | | Missing installer assets | The selected release is older than this installer | Choose `v0.1.0a2` or later; never mix files from different releases | | A checksum mismatch | A downloaded file is not the published one | Stop, and download the complete release again from the same trusted source | | The installer refuses to replace `weave` | Another program already uses that command path | Choose a different `--bin-dir`, or inspect the old command before replacing it yourself | @@ -268,7 +268,7 @@ delete them yourself if you want no trace. This route installs **unreleased development source from `main`**, for contributors and for trying changes made after the latest release. You do not -need it for any feature this documentation describes: the v0.1.0a10 release +need it for any feature this documentation describes: the v0.1.0a11 release includes them. Behavior on `main` can change before the next release. Follow the documentation of the same checkout. diff --git a/docs/operations/azure.md b/docs/operations/azure.md index ad7d231c..d0a1a3c0 100644 --- a/docs/operations/azure.md +++ b/docs/operations/azure.md @@ -162,9 +162,10 @@ row-level security. Never run the local fixture setup script there. See **Microsoft Entra ID as the identity provider for people is not verified.** Using Entra ID to manage access to AKS is separate from using it to sign people in to -Weave. The built-in token verifier accepts Microsoft's signing keys, which omit -`alg`, but no Entra token has been verified yet. Read -[Microsoft Entra ID (not verified)](identity-and-secrets.md#microsoft-entra-id-not-verified) +Weave. Azure preproduction checks have verified real Entra application tokens +for a host application and an independent worker. They do not verify interactive +human sign-in or qualify this AKS recipe. Read +[Microsoft Entra ID (human sign-in not verified)](identity-and-secrets.md#microsoft-entra-id-human-sign-in-not-verified) before you plan Weave sign-in with it. ## If something goes wrong diff --git a/docs/operations/identity-and-secrets.md b/docs/operations/identity-and-secrets.md index 95d727be..b7e7e388 100644 --- a/docs/operations/identity-and-secrets.md +++ b/docs/operations/identity-and-secrets.md @@ -290,10 +290,10 @@ The API adds the issuer of the `local-keycloak` provider, installation, and publishes `allow_loopback_http: true` because that provider is `local_development`. -**Microsoft Entra ID (illustrative, not verified).** This shape follows the -requirements in [Microsoft Entra ID](#microsoft-entra-id-not-verified). It has +**Microsoft Entra ID human sign-in (illustrative, not verified).** This shape follows the +requirements in [Microsoft Entra ID](#microsoft-entra-id-human-sign-in-not-verified). It has not been run against a Microsoft tenant. Replace every `YOUR_*` placeholder and -check the known verifier limitation in that section before you rely on it: +check the human sign-in requirements in that section before you rely on it: ```json [ @@ -586,7 +586,7 @@ are never used for authorization. | Provider | Server verification | Published sign-in | Status | | --- | --- | --- | --- | | Local Keycloak 26.7.4 from `weave platform setup` | Written to `runtime.env` | Written to `runtime.env`; display name set by `weave platform start` | Verified locally: browser sign-in with PKCE and the device flow, silent renewal with refresh-token rotation, revocation at sign-out, an unlinked account, and an account without grants | -| Microsoft Entra ID | Tenant-specific v2 profile | Illustrative entry in step 3 | Not verified; signing keys shaped like Entra's are covered by unit tests only, as described below | +| Microsoft Entra ID | Tenant-specific v2 profile | Illustrative human sign-in entry in step 3 | Application tokens verified in Azure preproduction for a host application and independent worker; human browser/device sign-in remains unverified | | Other OIDC providers | Profile built from the provider's access-token contract | Built from the checklist below | Not verified | ### Local Keycloak (development) @@ -650,16 +650,19 @@ realm. If browser sign-in is refused on a retained realm that `weave platform start` could not update, sign in with a code instead: `weave auth login --flow device`. -### Microsoft Entra ID (not verified) +### Microsoft Entra ID (human sign-in not verified) **Signing keys without `alg` are accepted by key type.** Microsoft's published signing keys for a tenant's v2 `jwks_uri` do not declare `alg`. The built-in verifier uses such an RSA key for `RS256` only, which is what Entra signs -access tokens with. Unit tests cover keys shaped like Entra's; no Entra token -has been verified yet. +access tokens with. Azure preproduction checks have verified real Entra +application tokens for a host application and an independent Agentic worker, +including the configured audience, client mapping, identity links, and scoped +grants. -The following requirements describe a configuration. None of them has been run -against a Microsoft tenant: +Application-token verification does not establish browser or device-code +sign-in for people. The following human sign-in configuration remains +unverified against a Microsoft tenant: 1. **Use the tenant-specific v2 issuer.** - The issuer is `https://login.microsoftonline.com/YOUR_TENANT_ID/v2.0`, and @@ -799,7 +802,7 @@ database login. | `ClaimsMapper` | Keycloak, generic, and Entra claim profiles; not wired into the built-in verifier | Exact provider claim shape and allowed mapping | | `PrincipalResolver` and identity links | Explicit local-principal mapping | Provisioning lifecycle and scope grants | | Published sign-in settings | Any provider listed in `WEAVE_OIDC_PROVIDERS` that meets the login-client checklist | Provider registration, scopes, and device verification origins | -| Entra and other CIAM products | Configuration guidance only | Not verified; Entra-shaped signing keys without `alg` are covered by unit tests only; no Entra group-overage expansion | +| Entra and other CIAM products | Entra application tokens verified in Azure preproduction; configuration guidance for human sign-in and other CIAM | Entra human browser/device sign-in and other providers remain unverified; no Entra group-overage expansion | An embedded verifier or resolver must keep these contracts. A generic mapper is not proof that a provider's ID token is safe as an API access token, or that its @@ -897,7 +900,7 @@ ones a person can fix alone. | `WV-AUTH-NOT-LINKED` | Sign-in worked, but the identity has no Weave principal yet | Link it with the details the person shares, as described in [People and access](../guides/people-and-access.md) | | `WV-AUTH-NO-ACCESS` | The principal is linked but has no grant in any environment | Grant a role in the intended workspace | | `WV-PROFILE-CHANGED` | The published issuer or login client changed after the person's review | The person reviews the platform again | -| HTTP 401 with `WV-UNAUTHENTICATED` for a token the provider issued | Issuer, audience, client mapping, token class, or signing key does not match the profile, or the identity is not linked | Compare the token's claims with step 2 and check the identity link; for Entra, see [Microsoft Entra ID (not verified)](#microsoft-entra-id-not-verified) | +| HTTP 401 with `WV-UNAUTHENTICATED` for a token the provider issued | Issuer, audience, client mapping, token class, or signing key does not match the profile, or the identity is not linked | Compare the token's claims with step 2 and check the identity link; for Entra, see [Microsoft Entra ID (human sign-in not verified)](#microsoft-entra-id-human-sign-in-not-verified) | | HTTP 403 with `WV-FORBIDDEN` | The identity is linked, but no grant covers that operation in that scope | Grant the role at the right level; an environment grant does not cover project-level operations such as retention and compatibility | **Changes take effect at different times.** A changed local grant applies at the diff --git a/docs/operations/remote-deployment.md b/docs/operations/remote-deployment.md index 29056dba..a243378e 100644 --- a/docs/operations/remote-deployment.md +++ b/docs/operations/remote-deployment.md @@ -33,9 +33,9 @@ is deployed with checked-in Kubernetes manifests. Running `weave` on your laptop creates no cloud cluster: your cloud's infrastructure tooling supplies the cluster, registry, database, and network. -**Planning Microsoft Entra ID for sign-in?** It has configuration guidance but -has not been verified yet. -[Read the requirements](identity-and-secrets.md#microsoft-entra-id-not-verified) +**Planning Microsoft Entra ID for people?** Application tokens have been +verified in Azure preproduction; human browser and device-code sign-in have not. +[Read the requirements](identity-and-secrets.md#microsoft-entra-id-human-sign-in-not-verified) before you choose your identity provider. ## Before you open a cloud terminal diff --git a/docs/operations/upgrades.md b/docs/operations/upgrades.md index 1416df51..15c42729 100644 --- a/docs/operations/upgrades.md +++ b/docs/operations/upgrades.md @@ -40,6 +40,7 @@ the desktop app never migrates a platform. | alpha8 | `0028_files` | Adds decision-table artifacts, separate Lumi configuration, file metadata/chunks/retention, and new scoped file and assistant roles. Existing grants do not automatically gain these roles. | | alpha9 | `0028_files` | No new schema migration. Adds guided AI configuration and renewable worker OAuth2 authentication. | | alpha10 | `0028_files` | No new schema migration. Restores Lumi access through the Studio host; explicit selection supersedes pending canvas fitting, and initial empty fields no longer steal focus. | +| alpha11 | `0028_files` | Studio AI setup wizards and explicit same-execution shared AI context; no server behavior or schema change. Updating the local Studio host and assets does not require redeploying an alpha10 server. |  @@ -264,8 +265,9 @@ the schema stays at `0025_run_lifecycle`. After the upgrade, check these points: verifier uses a JWKS key that omits `alg`, as Microsoft Entra ID publishes them, only for the allowed algorithm of its key type: an RSA key for `RS256`, a P-256 key for `ES256`. Keys that declare `alg` are checked as before. Unit - tests cover Entra-shaped keys; no Entra token has been verified, as - [Microsoft Entra ID (not verified)](identity-and-secrets.md#microsoft-entra-id-not-verified) + tests cover Entra-shaped keys, and Azure preproduction checks have verified + real Entra application tokens. Human sign-in remains unverified, as + [Microsoft Entra ID](identity-and-secrets.md#microsoft-entra-id-human-sign-in-not-verified) explains. - **Local Keycloak realms accept any loopback port.** A local platform still has [no in-place upgrade](#a-local-platform-has-no-in-place-upgrade), so set up diff --git a/docs/reference/local-runtime.md b/docs/reference/local-runtime.md index 2881cde7..c8641cdb 100644 --- a/docs/reference/local-runtime.md +++ b/docs/reference/local-runtime.md @@ -248,8 +248,10 @@ through Keycloak administration and link it with the [people and access commands](../guides/people-and-access.md). Signing in with the local Keycloak was verified against the real Keycloak 26.7.4 -sign-in pages, with PKCE and with the device code flow. Other identity providers, -such as Microsoft Entra ID, need their own configuration and are not verified; +sign-in pages, with PKCE and with the device code flow. Microsoft Entra ID +application tokens have separately been verified in Azure preproduction; Entra +browser and device-code sign-in for people remain unverified. Other identity +providers need their own configuration and acceptance checks; see [Use your own identity provider](../operations/identity-and-secrets.md#use-your-own-identity-provider). ## Connector actions on a local platform @@ -297,8 +299,9 @@ published keys (JWKS). snapshots; resolve again for a new operation. Other providers need a matching trust profile; -[Microsoft Entra ID](../operations/identity-and-secrets.md#microsoft-entra-id-not-verified) -is described there and is not verified. +[Microsoft Entra ID](../operations/identity-and-secrets.md#microsoft-entra-id-human-sign-in-not-verified) +application tokens have been verified in Azure preproduction; human sign-in +still needs its own acceptance checks. ## Tenant isolation and compatibility inventory @@ -408,7 +411,7 @@ supervision, none of which the local setup scripts provision. The locked framework is the published **PyFly 26.9.15**; the exact wheel hash and upstream commit are in the [project metadata](../../pyproject.toml). The API -package version is `0.1.0a10`; a checkout of `main` can carry unreleased changes +package version is `0.1.0a11`; a checkout of `main` can carry unreleased changes on top of it. Validate readiness, an authorized workflow, and your [backup and restore procedure](../operations/backup-restore.md) in the environment you intend to operate. diff --git a/docs/reference/native-openapi.md b/docs/reference/native-openapi.md index 8dbbca27..8a2567fc 100644 --- a/docs/reference/native-openapi.md +++ b/docs/reference/native-openapi.md @@ -118,7 +118,7 @@ each of these. ## Versions and what the document proves - The document's `info.version` is the API version, `1`. It is separate from - the package version (`0.1.0a10`) and from the workflow language version + the package version (`0.1.0a11`) and from the workflow language version (`weave/v1alpha1`). - The exporter uses PyFly 26.9.15. The exact URL, SHA-256, and upstream provenance are in [project metadata](../../pyproject.toml) and the lockfile. diff --git a/mkdocs.yml b/mkdocs.yml index 853b8123..247dae3f 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -110,6 +110,7 @@ nav: - Connect FTP and cloud drives: guides/file-connectors.md - Evaluate decision tables: reference/decision-tables.md - Run AI steps: guides/ai-workers.md + - Share context between AI steps: guides/shared-ai-context.md - Configure Lumi assistance: guides/lumi.md - Manage runs and business cases: guides/execution-management.md - Resolve incidents, cancel, and retry: reference/incident-operations.md diff --git a/pyproject.toml b/pyproject.toml index 7fd6c526..3c41c35d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -20,7 +20,7 @@ build-backend = "hatchling.build" [project] name = "firefly-weave" -version = "0.1.0a10" +version = "0.1.0a11" description = "API-first workflow orchestration and integration platform built on PyFly" readme = "README.md" license = "Apache-2.0" diff --git a/src/firefly_weave/__init__.py b/src/firefly_weave/__init__.py index bf3ddab3..e9294f7d 100644 --- a/src/firefly_weave/__init__.py +++ b/src/firefly_weave/__init__.py @@ -16,4 +16,4 @@ """Firefly Weave's offline contracts and workflow tooling.""" -__version__ = "0.1.0a10" +__version__ = "0.1.0a11" diff --git a/studio/src/app/designer/llm-inspector.ts b/studio/src/app/designer/llm-inspector.ts index 56dcd0c4..904b9cbc 100644 --- a/studio/src/app/designer/llm-inspector.ts +++ b/studio/src/app/designer/llm-inspector.ts @@ -30,7 +30,9 @@ import { ExpressionEditor } from "../property-grid"; import { aiConnector } from "../integrations/ai-provider-connection"; import { compatibleSlots, slotName } from "../integrations/slot-binding"; import { Select } from "../forms/ui/select"; -import { TaskForm } from "../task-form"; +import { AiProfileEditor } from "../integrations/ai-profile-editor"; +import { AiSetupWizard } from "../integrations/ai-setup-wizard"; +import { AiSharedContextPicker } from "../integrations/ai-shared-context-picker"; import { SchemaDesigner } from "../forms/ui/schema-designer"; import { referencesAt } from "../forms/core/reference-context"; import { describeError } from "../errors"; @@ -49,7 +51,14 @@ const object = (value: unknown): RecordValue => selector: "weave-llm-inspector", standalone: true, changeDetection: ChangeDetectionStrategy.Eager, - imports: [ExpressionEditor, TaskForm, SchemaDesigner, Select], + imports: [ + ExpressionEditor, + AiProfileEditor, + AiSetupWizard, + AiSharedContextPicker, + SchemaDesigner, + Select, + ], template: `