ms-tau-sdk 2.0.18.dev68__tar.gz → 2.0.19.dev69__tar.gz
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.
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/CHANGELOG.md +16 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/PKG-INFO +1 -1
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/pyproject.toml +1 -1
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/agent_skills/tau_project_customization/SKILL.md +4 -4
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/agent_skills/tau_security_and_access/SKILL.md +31 -28
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/backend/client.py +1 -1
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/.gitignore +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/README.md +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/packages/tau-board/src/ms_tau_board/__init__.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/packages/tau-board/src/ms_tau_board/app.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/packages/tau-board/src/ms_tau_board/cli.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/packages/tau-board/src/ms_tau_board/config.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/packages/tau-board/src/ms_tau_board/env_file.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/packages/tau-board/src/ms_tau_board/logs.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/packages/tau-board/src/ms_tau_board/proxy.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/packages/tau-board/src/ms_tau_board/state.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/packages/tau-board/src/ms_tau_board/static/BULMA-LICENSE.txt +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/packages/tau-board/src/ms_tau_board/static/app.js +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/packages/tau-board/src/ms_tau_board/static/board.css +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/packages/tau-board/src/ms_tau_board/static/bulma.min.css +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/packages/tau-board/src/ms_tau_board/static/index.html +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/__init__.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/agent_skills/tau_a2a_runtime_adapter/SKILL.md +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/agent_skills/tau_local_development/SKILL.md +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/agent_skills/tau_repository_integration/SKILL.md +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/api/__init__.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/api/a2a.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/api/chat.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/api/conversations.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/api/dependencies.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/api/health.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/api/inspection.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/api/local_chat.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/api/models.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/api/request_identity.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/api/sessions.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/app.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/application.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/backend/__init__.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/backend/assertions.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/backend/auth.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/backend/local.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/backend/mcp.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/backend/models.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/backend/routes.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/backend/team_memberships.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/cli.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/errors.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/logging.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/protocols/__init__.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/protocols/a2a_failure.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/protocols/a2a_message.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/protocols/a2a_roles.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/protocols/assistant_ui.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/protocols/chat_history.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/protocols/strict_json.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/providers/__init__.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/providers/definitions.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/providers/factory.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/providers/tau_compat.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/resources/SYSTEM.md +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/resources/__init__.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/resources/loader.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/resources/prompts/review-code-repository.md +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/runtime/__init__.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/runtime/deployment_health.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/runtime/events.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/runtime/extensions.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/runtime/failures.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/runtime/live_turns.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/runtime/manager.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/runtime/observability.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/runtime/provenance.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/runtime/requester.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/runtime/session.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/runtime/snapshots.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/runtime/task_context.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/sessions/__init__.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/sessions/storage.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/settings.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/skills.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/tools/__init__.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/tools/mainsequence_mcp.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/tools/mcp_applications.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/tools/mcp_connection.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/tools/skill_read.py +0 -0
- {ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/tools/task_control.py +0 -0
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.0.19 — 2026-10-19
|
|
4
|
+
|
|
5
|
+
- **The Security and access guide, the provider guide and the Tau skills describe access only by
|
|
6
|
+
policies.** The platform decides access to every shareable object by the policies on it. The
|
|
7
|
+
[guide](docs/reference/security-model.md#secrets) and the provider guide no longer say how earlier
|
|
8
|
+
shares became policies or that no membership or policy is protected, and
|
|
9
|
+
`tau_security_and_access` no longer says that a delegated call reaches what the person can view
|
|
10
|
+
and what others shared with them. The skill now says that the call reaches what the person's
|
|
11
|
+
policies allow, held directly or through a team; that whoever holds `editor` or `owner` on a
|
|
12
|
+
Secret sets its value; and that people other than Organization admins give a workload access
|
|
13
|
+
only when they manage it or can see its Job or release. The guide says that `editor` or `owner`
|
|
14
|
+
on a workload's repository, branch or Job lets an Agent change what that workload runs, and so
|
|
15
|
+
reach its Secrets. The provider guide's section is now
|
|
16
|
+
[Named providers and policies](docs/guides/project-configuration.md#named-providers-and-policies).
|
|
17
|
+
No SDK behavior changes.
|
|
18
|
+
|
|
3
19
|
## 2.0.18 — 2026-10-18
|
|
4
20
|
|
|
5
21
|
- **The Security and access guide and the Tau security skill describe Agent policies.** The
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: ms-tau-sdk
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.19.dev69
|
|
4
4
|
Summary: Workspace-bound Tau application primitives for Main Sequence projects
|
|
5
5
|
Project-URL: Changelog, https://github.com/mainsequence-sdk/ms-tau-sdk/blob/development/CHANGELOG.md
|
|
6
6
|
Project-URL: Documentation, https://github.com/mainsequence-sdk/ms-tau-sdk/tree/development/docs
|
|
@@ -183,8 +183,8 @@ Rules for tools that act for the requester:
|
|
|
183
183
|
credentials itself. A tool never reads, logs, stores, or forwards them, passes a path rather than
|
|
184
184
|
a URL, and never sets `Authorization` or an `X-MainSequence-*` header.
|
|
185
185
|
- A delegated call uses the person's ordinary permissions, including administrative ones; any other
|
|
186
|
-
call uses the Agent's own. Each operation decides what it needs
|
|
187
|
-
|
|
186
|
+
call uses the Agent's own. Each operation decides what it needs: never infer that a call may
|
|
187
|
+
change an object because it may read it.
|
|
188
188
|
- Return to the model only business results, such as rows, numbers, and names. Never return the
|
|
189
189
|
response object, its headers, a token, a proof, or a raw error body.
|
|
190
190
|
- Keep nothing for another turn or another person. The delegation ends with the turn, and a task
|
|
@@ -206,8 +206,8 @@ separate authority. Prompt injection can cause unintended changes, sharing, or d
|
|
|
206
206
|
person's permissions, and completed writes can outlast the delegation. Only Organization admins
|
|
207
207
|
enable this authority.
|
|
208
208
|
|
|
209
|
-
For a complete example, a tool that uses a person's Secret without exposing it, and how
|
|
210
|
-
|
|
209
|
+
For a complete example, a tool that uses a person's Secret without exposing it, and how policies
|
|
210
|
+
decide what a delegated call can reach, use `tau_security_and_access`.
|
|
211
211
|
|
|
212
212
|
## Validation
|
|
213
213
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: tau-security-and-access
|
|
3
|
-
description: Build and review project tools that call the platform or other applications for the person a turn serves, including tools that use a person's Secret without exposing it, and explain how delegation and
|
|
3
|
+
description: Build and review project tools that call the platform or other applications for the person a turn serves, including tools that use a person's Secret without exposing it, and explain how delegation and policies decide what those tools can reach.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# TAU Security and Access
|
|
@@ -8,7 +8,7 @@ description: Build and review project tools that call the platform or other appl
|
|
|
8
8
|
Use this skill when a project tool under `.tau/extensions/` calls the platform or another
|
|
9
9
|
platform application, uses a Secret, or must answer each person with their own data. Extension
|
|
10
10
|
mechanics are in `tau_project_customization`. The full model, with the administrator setup, is in
|
|
11
|
-
the SDK's Security and access guide (`docs/reference/security-model.md`).
|
|
11
|
+
the SDK's Security and access guide (`docs/reference/security-model.md`). Managing policies is in
|
|
12
12
|
`.agents/skills/mainsequence/platform_operations/access_control_and_sharing/SKILL.md`.
|
|
13
13
|
|
|
14
14
|
## Who a call acts as
|
|
@@ -26,7 +26,8 @@ Every call a tool makes through `platform_client()` follows one rule:
|
|
|
26
26
|
enable it, with `acts_for_requester`), for work no person asked for, in local mode and outside a
|
|
27
27
|
turn.
|
|
28
28
|
- The operation or application that receives the call decides what it may do. No list says which
|
|
29
|
-
operations accept a delegation.
|
|
29
|
+
operations accept a delegation. On the platform, each operation needs its own action: reading an
|
|
30
|
+
object never lets the call change, run or delete it, or decide who has access.
|
|
30
31
|
- The call stays the Agent's call, made for the person. It is not impersonation: the platform
|
|
31
32
|
checks it on every call, only while the turn or Task serving the person runs, for at most 24
|
|
32
33
|
hours after their request, and only in the Agent's Environment.
|
|
@@ -175,40 +176,42 @@ What makes it safe:
|
|
|
175
176
|
- The Agent's own workload holds no grant on these Secrets, so a call without the person reaches
|
|
176
177
|
none of them.
|
|
177
178
|
|
|
178
|
-
##
|
|
179
|
+
## Policies decide what a delegated call can reach
|
|
179
180
|
|
|
180
|
-
A delegated
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
membership. Who can see and manage a
|
|
184
|
-
`membership_manager`, `editor` and `owner` policies on
|
|
185
|
-
becomes its owner and first member, members can see the team
|
|
186
|
-
manage every team from their role, without being members.
|
|
187
|
-
Security and access guide's **Teams and membership** section. The platform enforces
|
|
188
|
-
which of those objects a tool uses is part of the tool's design. For Secrets, the
|
|
189
|
-
convention states that design:
|
|
181
|
+
A delegated call reaches what the person's policies allow in the Agent's Environment: the policies
|
|
182
|
+
they hold directly, such as `owner` on what they created, and those given to a team they belong to.
|
|
183
|
+
This holds for Secrets and every other object the platform decides by policies. A team's members
|
|
184
|
+
receive the policies given to it, and `in_teams()` answers membership. Who can see and manage a
|
|
185
|
+
team is decided separately, by the `viewer`, `membership_manager`, `editor` and `owner` policies on
|
|
186
|
+
it: any person can create a team and becomes its owner and first member, members can see the team
|
|
187
|
+
and leave it, and Organization admins manage every team from their role, without being members.
|
|
188
|
+
See the SDK Security and access guide's **Teams and membership** section. The platform enforces
|
|
189
|
+
the policies; which of those objects a tool uses is part of the tool's design. For Secrets, the
|
|
190
|
+
naming convention states that design:
|
|
190
191
|
|
|
191
192
|
- **A personal credential:** a name tied to the person, such as `QUOTES_API_KEY__<person uid>`.
|
|
192
|
-
The person decides whether
|
|
193
|
+
The person owns it and decides whether anyone else gets a policy on it.
|
|
193
194
|
- **A team credential:** a name the team agrees on, with `value_reader` attached to the team. The
|
|
194
195
|
tool reads it for any member.
|
|
195
|
-
- **Someone else's Secret
|
|
196
|
+
- **Someone else's Secret whose value the person may read:** valid whenever the tool is meant to
|
|
197
|
+
use it.
|
|
196
198
|
|
|
197
|
-
Whoever
|
|
198
|
-
|
|
199
|
-
|
|
199
|
+
Whoever holds `editor` or `owner` on a Secret sets its value, so the tool uses whatever value they
|
|
200
|
+
set. Giving someone either policy on a Secret, or using a Secret whose editors or owners are other
|
|
201
|
+
people, means trusting them with what the tool does with it. That is a decision people make when
|
|
202
|
+
they give policies, not one the platform makes for them.
|
|
200
203
|
|
|
201
|
-
How
|
|
204
|
+
How Secret policies work:
|
|
202
205
|
|
|
203
206
|
- Policies on a Secret decide access: `reader` sees that it exists and its name, never its value;
|
|
204
207
|
`value_reader` also reads the current value; `editor` also reads earlier values, sets a new value,
|
|
205
208
|
deletes it and sees who has access; `owner` also decides who has access. The creator becomes its
|
|
206
209
|
owner, and Organization admins hold every policy on their Organization's Secrets from their role.
|
|
207
210
|
- Owners attach and detach these policies for people, teams and workloads; whoever manages a
|
|
208
|
-
workload can also give it a policy they hold, and anyone can remove their own.
|
|
209
|
-
|
|
210
|
-
people
|
|
211
|
-
|
|
211
|
+
workload can also give it a policy they hold, and anyone can remove their own. Nobody gives a
|
|
212
|
+
policy with more than they hold, and people other than Organization admins give access only to
|
|
213
|
+
people who share an active team with them, to teams they belong to, and to workloads they manage
|
|
214
|
+
or whose Job or release they can see (`jobs.read` or `resource-releases.read`).
|
|
212
215
|
- `GET /api/v1/secrets/<uid>/access/` lists who holds which policy, for editors and owners, and
|
|
213
216
|
`GET /api/v1/secrets/<uid>/access/me/` answers what the caller may do with it. A tool can use
|
|
214
217
|
them when its design needs to, for example to refuse a team key where it expects a personal one.
|
|
@@ -265,9 +268,9 @@ platform checks it again on every call.
|
|
|
265
268
|
|
|
266
269
|
## Checking the person's teams
|
|
267
270
|
|
|
268
|
-
A delegated call already reaches exactly what the person can, including what
|
|
269
|
-
teams, so a tool rarely checks teams itself. When the tool's own policy names teams,
|
|
270
|
-
platform with `in_teams()`:
|
|
271
|
+
A delegated call already reaches exactly what the person can, including what the policies given to
|
|
272
|
+
their teams allow, so a tool rarely checks teams itself. When the tool's own policy names teams,
|
|
273
|
+
ask the platform with `in_teams()`:
|
|
271
274
|
|
|
272
275
|
```python
|
|
273
276
|
person = current_requester()
|
|
@@ -328,7 +331,7 @@ Patch the extension module's `current_requester` and `platform_client` with fake
|
|
|
328
331
|
- No person's UID, Secret name or Secret value comes from tool arguments, the prompt or history.
|
|
329
332
|
- No tool returns a credential or calls a platform path the model chooses.
|
|
330
333
|
- Secret values stay inside one call, in headers, never in results, logs, errors, URLs or caches.
|
|
331
|
-
- The naming convention says whose Secrets the tool uses, and the
|
|
334
|
+
- The naming convention says whose Secrets the tool uses, and the owners of those Secrets know it.
|
|
332
335
|
- A refused delegated call is reported, never retried as the Agent.
|
|
333
336
|
- The Agent's workload holds no grants it does not need, and none on people's Secrets; `user` is
|
|
334
337
|
enough on an Agent it only sends work to.
|
|
@@ -870,7 +870,7 @@ class MainSequenceClient:
|
|
|
870
870
|
custom_id: str | None = None,
|
|
871
871
|
organization_environment_uid: str | None = None,
|
|
872
872
|
) -> ProviderExecutionEvidence:
|
|
873
|
-
"""Hydrate
|
|
873
|
+
"""Hydrate a selection the user's policies allow, using the backend's access checks."""
|
|
874
874
|
selection: dict[str, str] = {"provider": provider, "model": model}
|
|
875
875
|
if thinking_level:
|
|
876
876
|
selection["thinking_level"] = thinking_level
|
|
File without changes
|
|
File without changes
|
{ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/packages/tau-board/src/ms_tau_board/__init__.py
RENAMED
|
File without changes
|
{ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/packages/tau-board/src/ms_tau_board/app.py
RENAMED
|
File without changes
|
{ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/packages/tau-board/src/ms_tau_board/cli.py
RENAMED
|
File without changes
|
{ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/packages/tau-board/src/ms_tau_board/config.py
RENAMED
|
File without changes
|
{ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/packages/tau-board/src/ms_tau_board/env_file.py
RENAMED
|
File without changes
|
{ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/packages/tau-board/src/ms_tau_board/logs.py
RENAMED
|
File without changes
|
{ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/packages/tau-board/src/ms_tau_board/proxy.py
RENAMED
|
File without changes
|
{ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/packages/tau-board/src/ms_tau_board/state.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/backend/team_memberships.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/protocols/assistant_ui.py
RENAMED
|
File without changes
|
{ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/protocols/chat_history.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/runtime/deployment_health.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/tools/mainsequence_mcp.py
RENAMED
|
File without changes
|
{ms_tau_sdk-2.0.18.dev68 → ms_tau_sdk-2.0.19.dev69}/src/ms_tau_sdk/tools/mcp_applications.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|