@kybernesis/arp-scope-catalog 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +80 -0
- package/dist/index.cjs +518 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +144 -0
- package/dist/index.d.ts +144 -0
- package/dist/index.js +501 -0
- package/dist/index.js.map +1 -0
- package/generated/manifest.json +1542 -0
- package/generated/scopes.json +1536 -0
- package/package.json +49 -0
- package/scopes/calendar.availability.read.yaml +35 -0
- package/scopes/calendar.events.cancel.yaml +24 -0
- package/scopes/calendar.events.create.yaml +31 -0
- package/scopes/calendar.events.modify.yaml +24 -0
- package/scopes/calendar.events.propose.yaml +35 -0
- package/scopes/calendar.events.read.yaml +38 -0
- package/scopes/connection.extend.yaml +28 -0
- package/scopes/connection.rescope.request.yaml +21 -0
- package/scopes/contacts.attributes.read.yaml +25 -0
- package/scopes/contacts.introduce.yaml +21 -0
- package/scopes/contacts.search.yaml +26 -0
- package/scopes/contacts.share.yaml +30 -0
- package/scopes/credentials.present.request.yaml +29 -0
- package/scopes/credentials.proof.zk.request.yaml +31 -0
- package/scopes/delegation.forward.task.yaml +36 -0
- package/scopes/files.project.files.delete.yaml +31 -0
- package/scopes/files.project.files.list.yaml +22 -0
- package/scopes/files.project.files.read.yaml +35 -0
- package/scopes/files.project.files.summarize.yaml +30 -0
- package/scopes/files.project.files.write.yaml +34 -0
- package/scopes/files.project.metadata.read.yaml +21 -0
- package/scopes/files.projects.list.yaml +18 -0
- package/scopes/files.share.external.yaml +39 -0
- package/scopes/identity.card.read.yaml +18 -0
- package/scopes/identity.introduction.request.yaml +24 -0
- package/scopes/identity.principal.verify.yaml +19 -0
- package/scopes/knowledge.query.yaml +31 -0
- package/scopes/messaging.chat.send.yaml +27 -0
- package/scopes/messaging.email.draft.compose.yaml +23 -0
- package/scopes/messaging.email.send.reviewed.yaml +36 -0
- package/scopes/messaging.email.summary.yaml +26 -0
- package/scopes/messaging.email.thread.read.yaml +29 -0
- package/scopes/messaging.relay.to_principal.yaml +22 -0
- package/scopes/notes.read.yaml +25 -0
- package/scopes/notes.search.yaml +24 -0
- package/scopes/notes.write.yaml +32 -0
- package/scopes/payments.authorize.capped.yaml +37 -0
- package/scopes/payments.history.read.yaml +28 -0
- package/scopes/payments.quote.request.yaml +18 -0
- package/scopes/payments.refund.request.yaml +24 -0
- package/scopes/tasks.assign.yaml +27 -0
- package/scopes/tasks.create.yaml +31 -0
- package/scopes/tasks.list.yaml +21 -0
- package/scopes/tasks.read.yaml +22 -0
- package/scopes/tasks.status.update.yaml +22 -0
- package/scopes/tools.invoke.mutating.yaml +37 -0
- package/scopes/tools.invoke.read.yaml +28 -0
- package/scopes/work.projects.list.yaml +18 -0
- package/scopes/work.reports.summary.yaml +29 -0
- package/scopes/work.status.read.yaml +18 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
id: files.projects.list
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
label: List projects
|
|
4
|
+
description: Peer can list project names and IDs from your project registry.
|
|
5
|
+
category: files
|
|
6
|
+
risk: low
|
|
7
|
+
parameters: []
|
|
8
|
+
cedar_template: |
|
|
9
|
+
permit (
|
|
10
|
+
principal == Agent::"{{audience_did}}",
|
|
11
|
+
action == Action::"list",
|
|
12
|
+
resource == ProjectRegistry::"self"
|
|
13
|
+
);
|
|
14
|
+
consent_text_template: "See the list of your projects (names + IDs only)."
|
|
15
|
+
obligations_forced: []
|
|
16
|
+
implies: []
|
|
17
|
+
conflicts_with: []
|
|
18
|
+
step_up_required: false
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
id: files.share.external
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
label: Share files outside circle
|
|
4
|
+
description: Peer can share files from a project with an external recipient allowlist.
|
|
5
|
+
category: files
|
|
6
|
+
risk: critical
|
|
7
|
+
parameters:
|
|
8
|
+
- name: project_id
|
|
9
|
+
type: ProjectID
|
|
10
|
+
required: true
|
|
11
|
+
- name: recipient_allowlist
|
|
12
|
+
type: EmailList
|
|
13
|
+
required: true
|
|
14
|
+
validation: "rfc5322-or-domain-glob"
|
|
15
|
+
cedar_template: |
|
|
16
|
+
permit (
|
|
17
|
+
principal == Agent::"{{audience_did}}",
|
|
18
|
+
action == Action::"share_external",
|
|
19
|
+
resource in Project::"{{project_id}}"
|
|
20
|
+
) when {
|
|
21
|
+
context.recipient_matches_allowlist({{recipient_allowlist_json}})
|
|
22
|
+
};
|
|
23
|
+
consent_text_template: "Share files from {{project_id}} externally to: {{recipient_allowlist_display}}."
|
|
24
|
+
obligations_forced:
|
|
25
|
+
- type: require_principal_confirmation
|
|
26
|
+
params:
|
|
27
|
+
max_age_seconds: 0
|
|
28
|
+
- type: audit_level
|
|
29
|
+
params:
|
|
30
|
+
level: verbose
|
|
31
|
+
- type: notify_principal
|
|
32
|
+
params: {}
|
|
33
|
+
- type: insert_watermark
|
|
34
|
+
params: {}
|
|
35
|
+
implies: []
|
|
36
|
+
conflicts_with:
|
|
37
|
+
- files.project.files.delete
|
|
38
|
+
tier_gate: self_xyz.verified_human
|
|
39
|
+
step_up_required: true
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
id: identity.card.read
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
label: Read agent card
|
|
4
|
+
description: Allow the peer agent to fetch your agent card (name, supported protocols, public endpoints).
|
|
5
|
+
category: identity
|
|
6
|
+
risk: low
|
|
7
|
+
parameters: []
|
|
8
|
+
cedar_template: |
|
|
9
|
+
permit (
|
|
10
|
+
principal == Agent::"{{audience_did}}",
|
|
11
|
+
action == Action::"read",
|
|
12
|
+
resource == AgentCard::"self"
|
|
13
|
+
);
|
|
14
|
+
consent_text_template: "See your public agent card."
|
|
15
|
+
obligations_forced: []
|
|
16
|
+
implies: []
|
|
17
|
+
conflicts_with: []
|
|
18
|
+
step_up_required: false
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
id: identity.introduction.request
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
label: Request introduction
|
|
4
|
+
description: Peer can ask your agent to introduce them to another agent you know.
|
|
5
|
+
category: identity
|
|
6
|
+
risk: medium
|
|
7
|
+
parameters:
|
|
8
|
+
- name: to_agent
|
|
9
|
+
type: AgentDID
|
|
10
|
+
required: true
|
|
11
|
+
cedar_template: |
|
|
12
|
+
permit (
|
|
13
|
+
principal == Agent::"{{audience_did}}",
|
|
14
|
+
action == Action::"request_introduction",
|
|
15
|
+
resource == Agent::"{{to_agent}}"
|
|
16
|
+
);
|
|
17
|
+
consent_text_template: "Introduce Peer to {{to_agent}}."
|
|
18
|
+
obligations_forced:
|
|
19
|
+
- type: require_principal_confirmation
|
|
20
|
+
params:
|
|
21
|
+
max_age_seconds: 86400
|
|
22
|
+
implies: []
|
|
23
|
+
conflicts_with: []
|
|
24
|
+
step_up_required: false
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
id: identity.principal.verify
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
label: Verify owner binding
|
|
4
|
+
description: Peer can fetch and verify your representation VC, confirming which human principal your agent represents.
|
|
5
|
+
category: identity
|
|
6
|
+
risk: low
|
|
7
|
+
parameters: []
|
|
8
|
+
cedar_template: |
|
|
9
|
+
permit (
|
|
10
|
+
principal == Agent::"{{audience_did}}",
|
|
11
|
+
action == Action::"verify_principal",
|
|
12
|
+
resource == Principal::"self"
|
|
13
|
+
);
|
|
14
|
+
consent_text_template: "Let Peer verify who your agent represents."
|
|
15
|
+
obligations_forced: []
|
|
16
|
+
implies:
|
|
17
|
+
- identity.card.read
|
|
18
|
+
conflicts_with: []
|
|
19
|
+
step_up_required: false
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
id: knowledge.query
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
label: Query knowledge base
|
|
4
|
+
description: Peer can query a specific knowledge base and receive token-bounded answers.
|
|
5
|
+
category: notes
|
|
6
|
+
risk: medium
|
|
7
|
+
parameters:
|
|
8
|
+
- name: kb_id
|
|
9
|
+
type: ProjectID
|
|
10
|
+
required: true
|
|
11
|
+
- name: max_tokens
|
|
12
|
+
type: Integer
|
|
13
|
+
required: true
|
|
14
|
+
default: 8000
|
|
15
|
+
validation: "100..50000"
|
|
16
|
+
cedar_template: |
|
|
17
|
+
permit (
|
|
18
|
+
principal == Agent::"{{audience_did}}",
|
|
19
|
+
action == Action::"query",
|
|
20
|
+
resource == KnowledgeBase::"{{kb_id}}"
|
|
21
|
+
) when {
|
|
22
|
+
context.requested_tokens <= {{max_tokens}}
|
|
23
|
+
};
|
|
24
|
+
consent_text_template: "Query knowledge base {{kb_id}} (up to {{max_tokens}} tokens/response)."
|
|
25
|
+
obligations_forced:
|
|
26
|
+
- type: summarize_only
|
|
27
|
+
params:
|
|
28
|
+
max_words: "{{max_tokens}}"
|
|
29
|
+
implies: []
|
|
30
|
+
conflicts_with: []
|
|
31
|
+
step_up_required: false
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
id: messaging.chat.send
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
label: Send chat message
|
|
4
|
+
description: Peer can send chat messages on your behalf within an allowlisted set of channels.
|
|
5
|
+
category: messaging
|
|
6
|
+
risk: medium
|
|
7
|
+
parameters:
|
|
8
|
+
- name: channel_allowlist
|
|
9
|
+
type: AttributeList
|
|
10
|
+
required: true
|
|
11
|
+
validation: "at-least-one"
|
|
12
|
+
cedar_template: |
|
|
13
|
+
permit (
|
|
14
|
+
principal == Agent::"{{audience_did}}",
|
|
15
|
+
action == Action::"send_chat",
|
|
16
|
+
resource == ChatChannel
|
|
17
|
+
) when {
|
|
18
|
+
resource.id in {{channel_allowlist_json}}
|
|
19
|
+
};
|
|
20
|
+
consent_text_template: "Send chat messages on your behalf in: {{channel_allowlist_display}}."
|
|
21
|
+
obligations_forced:
|
|
22
|
+
- type: audit_level
|
|
23
|
+
params:
|
|
24
|
+
level: verbose
|
|
25
|
+
implies: []
|
|
26
|
+
conflicts_with: []
|
|
27
|
+
step_up_required: false
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
id: messaging.email.draft.compose
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
label: Compose drafts (no send)
|
|
4
|
+
description: Peer can compose email drafts in your drafts folder without sending them.
|
|
5
|
+
category: messaging
|
|
6
|
+
risk: medium
|
|
7
|
+
parameters: []
|
|
8
|
+
cedar_template: |
|
|
9
|
+
permit (
|
|
10
|
+
principal == Agent::"{{audience_did}}",
|
|
11
|
+
action == Action::"compose_draft",
|
|
12
|
+
resource == Email::"drafts"
|
|
13
|
+
);
|
|
14
|
+
forbid (
|
|
15
|
+
principal == Agent::"{{audience_did}}",
|
|
16
|
+
action == Action::"send_email",
|
|
17
|
+
resource
|
|
18
|
+
);
|
|
19
|
+
consent_text_template: "Compose email drafts for you to review (no sending)."
|
|
20
|
+
obligations_forced: []
|
|
21
|
+
implies: []
|
|
22
|
+
conflicts_with: []
|
|
23
|
+
step_up_required: false
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
id: messaging.email.send.reviewed
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
label: Send email (after your review)
|
|
4
|
+
description: Peer drafts emails on your behalf; each send requires your one-tap approval before going out.
|
|
5
|
+
category: messaging
|
|
6
|
+
risk: high
|
|
7
|
+
parameters:
|
|
8
|
+
- name: recipient_allowlist
|
|
9
|
+
type: EmailList
|
|
10
|
+
required: false
|
|
11
|
+
default: []
|
|
12
|
+
validation: "rfc5322-or-domain-glob"
|
|
13
|
+
cedar_template: |
|
|
14
|
+
permit (
|
|
15
|
+
principal == Agent::"{{audience_did}}",
|
|
16
|
+
action == Action::"send_email",
|
|
17
|
+
resource == Email::"outbox"
|
|
18
|
+
) when {
|
|
19
|
+
{{#if recipient_allowlist}}
|
|
20
|
+
context.recipient_matches_allowlist({{recipient_allowlist_json}})
|
|
21
|
+
{{else}}
|
|
22
|
+
true
|
|
23
|
+
{{/if}}
|
|
24
|
+
};
|
|
25
|
+
consent_text_template: "Draft and (with your approval) send emails{{#if recipient_allowlist}} to: {{recipient_allowlist_display}}{{/if}}."
|
|
26
|
+
obligations_forced:
|
|
27
|
+
- type: require_principal_confirmation
|
|
28
|
+
params:
|
|
29
|
+
max_age_seconds: 0
|
|
30
|
+
- type: audit_level
|
|
31
|
+
params:
|
|
32
|
+
level: verbose
|
|
33
|
+
implies:
|
|
34
|
+
- messaging.email.draft.compose
|
|
35
|
+
conflicts_with: []
|
|
36
|
+
step_up_required: true
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
id: messaging.email.summary
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
label: Email summaries only
|
|
4
|
+
description: Peer receives only summaries of your email threads, never the raw content.
|
|
5
|
+
category: messaging
|
|
6
|
+
risk: medium
|
|
7
|
+
parameters:
|
|
8
|
+
- name: label_filter
|
|
9
|
+
type: AttributeList
|
|
10
|
+
required: false
|
|
11
|
+
default: []
|
|
12
|
+
validation: "label-or-folder-name"
|
|
13
|
+
cedar_template: |
|
|
14
|
+
permit (
|
|
15
|
+
principal == Agent::"{{audience_did}}",
|
|
16
|
+
action == Action::"summarize",
|
|
17
|
+
resource == Email
|
|
18
|
+
);
|
|
19
|
+
consent_text_template: "Share email summaries (never raw content){{#if label_filter}} for labels: {{label_filter_display}}{{/if}}."
|
|
20
|
+
obligations_forced:
|
|
21
|
+
- type: summarize_only
|
|
22
|
+
params:
|
|
23
|
+
max_words: 250
|
|
24
|
+
implies: []
|
|
25
|
+
conflicts_with: []
|
|
26
|
+
step_up_required: false
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
id: messaging.email.thread.read
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
label: Read email threads
|
|
4
|
+
description: Peer can read the full contents of email threads matching optional label filters.
|
|
5
|
+
category: messaging
|
|
6
|
+
risk: high
|
|
7
|
+
parameters:
|
|
8
|
+
- name: label_filter
|
|
9
|
+
type: AttributeList
|
|
10
|
+
required: false
|
|
11
|
+
default: []
|
|
12
|
+
validation: "label-or-folder-name"
|
|
13
|
+
cedar_template: |
|
|
14
|
+
permit (
|
|
15
|
+
principal == Agent::"{{audience_did}}",
|
|
16
|
+
action == Action::"read",
|
|
17
|
+
resource == Email
|
|
18
|
+
) {{#if label_filter}}when {
|
|
19
|
+
resource.labels.containsAny({{label_filter_json}})
|
|
20
|
+
}{{/if}};
|
|
21
|
+
consent_text_template: "Read email thread contents{{#if label_filter}} for labels: {{label_filter_display}}{{/if}}."
|
|
22
|
+
obligations_forced:
|
|
23
|
+
- type: audit_level
|
|
24
|
+
params:
|
|
25
|
+
level: verbose
|
|
26
|
+
implies:
|
|
27
|
+
- messaging.email.summary
|
|
28
|
+
conflicts_with: []
|
|
29
|
+
step_up_required: true
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
id: messaging.relay.to_principal
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
label: Relay message to owner
|
|
4
|
+
description: Peer can ask your agent to relay a short message to you (the principal).
|
|
5
|
+
category: messaging
|
|
6
|
+
risk: low
|
|
7
|
+
parameters: []
|
|
8
|
+
cedar_template: |
|
|
9
|
+
permit (
|
|
10
|
+
principal == Agent::"{{audience_did}}",
|
|
11
|
+
action == Action::"relay_to_principal",
|
|
12
|
+
resource == Principal::"self"
|
|
13
|
+
);
|
|
14
|
+
consent_text_template: "Let Peer send you short relayed messages."
|
|
15
|
+
obligations_forced:
|
|
16
|
+
- type: rate_limit
|
|
17
|
+
params:
|
|
18
|
+
window: hour
|
|
19
|
+
max: 10
|
|
20
|
+
implies: []
|
|
21
|
+
conflicts_with: []
|
|
22
|
+
step_up_required: false
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
id: notes.read
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
label: Read notes
|
|
4
|
+
description: Peer can read full note contents in a specific collection.
|
|
5
|
+
category: notes
|
|
6
|
+
risk: medium
|
|
7
|
+
parameters:
|
|
8
|
+
- name: collection_id
|
|
9
|
+
type: ProjectID
|
|
10
|
+
required: true
|
|
11
|
+
cedar_template: |
|
|
12
|
+
permit (
|
|
13
|
+
principal == Agent::"{{audience_did}}",
|
|
14
|
+
action == Action::"read",
|
|
15
|
+
resource in Collection::"{{collection_id}}"
|
|
16
|
+
);
|
|
17
|
+
consent_text_template: "Read notes in collection {{collection_id}}."
|
|
18
|
+
obligations_forced:
|
|
19
|
+
- type: audit_level
|
|
20
|
+
params:
|
|
21
|
+
level: verbose
|
|
22
|
+
implies:
|
|
23
|
+
- notes.search
|
|
24
|
+
conflicts_with: []
|
|
25
|
+
step_up_required: false
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
id: notes.search
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
label: Search notes
|
|
4
|
+
description: Peer can search notes within a collection and receive title+snippet matches.
|
|
5
|
+
category: notes
|
|
6
|
+
risk: medium
|
|
7
|
+
parameters:
|
|
8
|
+
- name: collection_id
|
|
9
|
+
type: ProjectID
|
|
10
|
+
required: true
|
|
11
|
+
cedar_template: |
|
|
12
|
+
permit (
|
|
13
|
+
principal == Agent::"{{audience_did}}",
|
|
14
|
+
action == Action::"search",
|
|
15
|
+
resource in Collection::"{{collection_id}}"
|
|
16
|
+
);
|
|
17
|
+
consent_text_template: "Search notes in collection {{collection_id}}."
|
|
18
|
+
obligations_forced:
|
|
19
|
+
- type: summarize_only
|
|
20
|
+
params:
|
|
21
|
+
max_words: 100
|
|
22
|
+
implies: []
|
|
23
|
+
conflicts_with: []
|
|
24
|
+
step_up_required: false
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
id: notes.write
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
label: Create/update notes
|
|
4
|
+
description: Peer can create and update notes in a collection, up to a daily cap.
|
|
5
|
+
category: notes
|
|
6
|
+
risk: medium
|
|
7
|
+
parameters:
|
|
8
|
+
- name: collection_id
|
|
9
|
+
type: ProjectID
|
|
10
|
+
required: true
|
|
11
|
+
- name: max_per_day
|
|
12
|
+
type: Integer
|
|
13
|
+
required: true
|
|
14
|
+
default: 100
|
|
15
|
+
validation: "1..1000"
|
|
16
|
+
cedar_template: |
|
|
17
|
+
permit (
|
|
18
|
+
principal == Agent::"{{audience_did}}",
|
|
19
|
+
action in [Action::"write", Action::"update"],
|
|
20
|
+
resource in Collection::"{{collection_id}}"
|
|
21
|
+
) when {
|
|
22
|
+
context.notes_written_today < {{max_per_day}}
|
|
23
|
+
};
|
|
24
|
+
consent_text_template: "Create/update notes in {{collection_id}} (up to {{max_per_day}}/day)."
|
|
25
|
+
obligations_forced:
|
|
26
|
+
- type: audit_level
|
|
27
|
+
params:
|
|
28
|
+
level: verbose
|
|
29
|
+
implies:
|
|
30
|
+
- notes.read
|
|
31
|
+
conflicts_with: []
|
|
32
|
+
step_up_required: false
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
id: payments.authorize.capped
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
label: Authorize payments up to a cap
|
|
4
|
+
description: Peer can trigger x402 payments up to the per-transaction and rolling 30-day caps you set.
|
|
5
|
+
category: payments
|
|
6
|
+
risk: high
|
|
7
|
+
parameters:
|
|
8
|
+
- name: max_per_txn_usd
|
|
9
|
+
type: Decimal
|
|
10
|
+
required: true
|
|
11
|
+
default: 5
|
|
12
|
+
validation: "0.01..1000"
|
|
13
|
+
- name: max_per_30d_usd
|
|
14
|
+
type: Decimal
|
|
15
|
+
required: true
|
|
16
|
+
default: 50
|
|
17
|
+
validation: "0.01..10000"
|
|
18
|
+
cedar_template: |
|
|
19
|
+
permit (
|
|
20
|
+
principal == Agent::"{{audience_did}}",
|
|
21
|
+
action == Action::"authorize_payment",
|
|
22
|
+
resource == Wallet::"primary"
|
|
23
|
+
) when {
|
|
24
|
+
context.quoted_price_usd <= {{max_per_txn_usd}} &&
|
|
25
|
+
context.spend_last_30d_usd + context.quoted_price_usd <= {{max_per_30d_usd}}
|
|
26
|
+
};
|
|
27
|
+
consent_text_template: "Pay up to ${{max_per_txn_usd}} per request, ${{max_per_30d_usd}} total per 30 days."
|
|
28
|
+
obligations_forced:
|
|
29
|
+
- type: notify_principal
|
|
30
|
+
params: {}
|
|
31
|
+
- type: audit_level
|
|
32
|
+
params:
|
|
33
|
+
level: verbose
|
|
34
|
+
implies: []
|
|
35
|
+
conflicts_with: []
|
|
36
|
+
tier_gate: self_xyz.verified_human
|
|
37
|
+
step_up_required: true
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
id: payments.history.read
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
label: Read past transactions
|
|
4
|
+
description: Peer can read your payment history for the past N days.
|
|
5
|
+
category: payments
|
|
6
|
+
risk: medium
|
|
7
|
+
parameters:
|
|
8
|
+
- name: days_back
|
|
9
|
+
type: Integer
|
|
10
|
+
required: true
|
|
11
|
+
default: 30
|
|
12
|
+
validation: "1..365"
|
|
13
|
+
cedar_template: |
|
|
14
|
+
permit (
|
|
15
|
+
principal == Agent::"{{audience_did}}",
|
|
16
|
+
action == Action::"read",
|
|
17
|
+
resource == PaymentHistory::"self"
|
|
18
|
+
) when {
|
|
19
|
+
context.query_window_days <= {{days_back}}
|
|
20
|
+
};
|
|
21
|
+
consent_text_template: "Read payment history for the past {{days_back}} days."
|
|
22
|
+
obligations_forced:
|
|
23
|
+
- type: audit_level
|
|
24
|
+
params:
|
|
25
|
+
level: verbose
|
|
26
|
+
implies: []
|
|
27
|
+
conflicts_with: []
|
|
28
|
+
step_up_required: false
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
id: payments.quote.request
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
label: Request a price quote
|
|
4
|
+
description: Peer can request a price quote for an action or purchase (quote only, no payment).
|
|
5
|
+
category: payments
|
|
6
|
+
risk: low
|
|
7
|
+
parameters: []
|
|
8
|
+
cedar_template: |
|
|
9
|
+
permit (
|
|
10
|
+
principal == Agent::"{{audience_did}}",
|
|
11
|
+
action == Action::"request_quote",
|
|
12
|
+
resource == Wallet::"primary"
|
|
13
|
+
);
|
|
14
|
+
consent_text_template: "Let Peer request a price quote (no payment)."
|
|
15
|
+
obligations_forced: []
|
|
16
|
+
implies: []
|
|
17
|
+
conflicts_with: []
|
|
18
|
+
step_up_required: false
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
id: payments.refund.request
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
label: Request refund
|
|
4
|
+
description: Peer can request a refund against a prior payment.
|
|
5
|
+
category: payments
|
|
6
|
+
risk: medium
|
|
7
|
+
parameters: []
|
|
8
|
+
cedar_template: |
|
|
9
|
+
permit (
|
|
10
|
+
principal == Agent::"{{audience_did}}",
|
|
11
|
+
action == Action::"request_refund",
|
|
12
|
+
resource == Payment
|
|
13
|
+
);
|
|
14
|
+
consent_text_template: "Let Peer request a refund on a prior payment."
|
|
15
|
+
obligations_forced:
|
|
16
|
+
- type: require_principal_confirmation
|
|
17
|
+
params:
|
|
18
|
+
max_age_seconds: 0
|
|
19
|
+
- type: audit_level
|
|
20
|
+
params:
|
|
21
|
+
level: verbose
|
|
22
|
+
implies: []
|
|
23
|
+
conflicts_with: []
|
|
24
|
+
step_up_required: false
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
id: tasks.assign
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
label: Assign tasks to humans
|
|
4
|
+
description: Peer can assign tasks in a project to specific people.
|
|
5
|
+
category: tasks
|
|
6
|
+
risk: high
|
|
7
|
+
parameters:
|
|
8
|
+
- name: project_id
|
|
9
|
+
type: ProjectID
|
|
10
|
+
required: true
|
|
11
|
+
cedar_template: |
|
|
12
|
+
permit (
|
|
13
|
+
principal == Agent::"{{audience_did}}",
|
|
14
|
+
action == Action::"assign",
|
|
15
|
+
resource in Project::"{{project_id}}"
|
|
16
|
+
);
|
|
17
|
+
consent_text_template: "Assign tasks to people in project {{project_id}}."
|
|
18
|
+
obligations_forced:
|
|
19
|
+
- type: audit_level
|
|
20
|
+
params:
|
|
21
|
+
level: verbose
|
|
22
|
+
- type: notify_principal
|
|
23
|
+
params: {}
|
|
24
|
+
implies:
|
|
25
|
+
- tasks.read
|
|
26
|
+
conflicts_with: []
|
|
27
|
+
step_up_required: true
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
id: tasks.create
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
label: Create tasks
|
|
4
|
+
description: Peer can create tasks in a project, up to a daily cap.
|
|
5
|
+
category: tasks
|
|
6
|
+
risk: medium
|
|
7
|
+
parameters:
|
|
8
|
+
- name: project_id
|
|
9
|
+
type: ProjectID
|
|
10
|
+
required: true
|
|
11
|
+
- name: max_per_day
|
|
12
|
+
type: Integer
|
|
13
|
+
required: true
|
|
14
|
+
default: 50
|
|
15
|
+
validation: "1..500"
|
|
16
|
+
cedar_template: |
|
|
17
|
+
permit (
|
|
18
|
+
principal == Agent::"{{audience_did}}",
|
|
19
|
+
action == Action::"create",
|
|
20
|
+
resource in Project::"{{project_id}}"
|
|
21
|
+
) when {
|
|
22
|
+
context.tasks_created_today < {{max_per_day}}
|
|
23
|
+
};
|
|
24
|
+
consent_text_template: "Create tasks in {{project_id}} (up to {{max_per_day}}/day)."
|
|
25
|
+
obligations_forced:
|
|
26
|
+
- type: audit_level
|
|
27
|
+
params:
|
|
28
|
+
level: verbose
|
|
29
|
+
implies: []
|
|
30
|
+
conflicts_with: []
|
|
31
|
+
step_up_required: false
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
id: tasks.list
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
label: List tasks
|
|
4
|
+
description: Peer can list tasks within a project.
|
|
5
|
+
category: tasks
|
|
6
|
+
risk: low
|
|
7
|
+
parameters:
|
|
8
|
+
- name: project_id
|
|
9
|
+
type: ProjectID
|
|
10
|
+
required: true
|
|
11
|
+
cedar_template: |
|
|
12
|
+
permit (
|
|
13
|
+
principal == Agent::"{{audience_did}}",
|
|
14
|
+
action == Action::"list",
|
|
15
|
+
resource in Project::"{{project_id}}"
|
|
16
|
+
);
|
|
17
|
+
consent_text_template: "List tasks in project {{project_id}}."
|
|
18
|
+
obligations_forced: []
|
|
19
|
+
implies: []
|
|
20
|
+
conflicts_with: []
|
|
21
|
+
step_up_required: false
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
id: tasks.read
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
label: Read task details
|
|
4
|
+
description: Peer can read details (title, status, assignee, due) of tasks within a project.
|
|
5
|
+
category: tasks
|
|
6
|
+
risk: low
|
|
7
|
+
parameters:
|
|
8
|
+
- name: project_id
|
|
9
|
+
type: ProjectID
|
|
10
|
+
required: true
|
|
11
|
+
cedar_template: |
|
|
12
|
+
permit (
|
|
13
|
+
principal == Agent::"{{audience_did}}",
|
|
14
|
+
action == Action::"read",
|
|
15
|
+
resource in Project::"{{project_id}}"
|
|
16
|
+
);
|
|
17
|
+
consent_text_template: "Read task details in project {{project_id}}."
|
|
18
|
+
obligations_forced: []
|
|
19
|
+
implies:
|
|
20
|
+
- tasks.list
|
|
21
|
+
conflicts_with: []
|
|
22
|
+
step_up_required: false
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
id: tasks.status.update
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
label: Update task status
|
|
4
|
+
description: Peer can update the status (open/in-progress/done) of tasks in a project.
|
|
5
|
+
category: tasks
|
|
6
|
+
risk: medium
|
|
7
|
+
parameters:
|
|
8
|
+
- name: project_id
|
|
9
|
+
type: ProjectID
|
|
10
|
+
required: true
|
|
11
|
+
cedar_template: |
|
|
12
|
+
permit (
|
|
13
|
+
principal == Agent::"{{audience_did}}",
|
|
14
|
+
action == Action::"update_status",
|
|
15
|
+
resource in Project::"{{project_id}}"
|
|
16
|
+
);
|
|
17
|
+
consent_text_template: "Update task status in {{project_id}}."
|
|
18
|
+
obligations_forced: []
|
|
19
|
+
implies:
|
|
20
|
+
- tasks.read
|
|
21
|
+
conflicts_with: []
|
|
22
|
+
step_up_required: false
|