@contractspec/example.pocket-family-office 3.7.17 → 3.7.18
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/dist/blueprint.js +1 -197
- package/dist/browser/blueprint.js +1 -197
- package/dist/browser/connections/samples.js +1 -197
- package/dist/browser/docs/index.js +3 -48
- package/dist/browser/docs/pocket-family-office.docblock.js +3 -48
- package/dist/browser/example.js +1 -42
- package/dist/browser/index.js +4 -1660
- package/dist/browser/knowledge/sources.sample.js +1 -70
- package/dist/browser/operations/index.js +1 -314
- package/dist/browser/pocket-family-office.capability.js +1 -19
- package/dist/browser/pocket-family-office.feature.js +2 -86
- package/dist/browser/telemetry.js +1 -176
- package/dist/browser/tenant.sample.js +1 -71
- package/dist/browser/workflows/generate-financial-summary.js +1 -58
- package/dist/browser/workflows/generate-openbanking-overview.js +1 -52
- package/dist/browser/workflows/index.js +1 -467
- package/dist/browser/workflows/ingest-email-threads.js +1 -56
- package/dist/browser/workflows/process-uploaded-document.js +1 -54
- package/dist/browser/workflows/refresh-openbanking-balances.js +1 -64
- package/dist/browser/workflows/sync-openbanking-accounts.js +1 -64
- package/dist/browser/workflows/sync-openbanking-transactions.js +1 -64
- package/dist/browser/workflows/upcoming-payments-reminder.js +1 -62
- package/dist/connections/samples.js +1 -197
- package/dist/docs/index.js +3 -48
- package/dist/docs/pocket-family-office.docblock.js +3 -48
- package/dist/example.js +1 -42
- package/dist/index.js +4 -1660
- package/dist/knowledge/sources.sample.js +1 -70
- package/dist/node/blueprint.js +1 -197
- package/dist/node/connections/samples.js +1 -197
- package/dist/node/docs/index.js +3 -48
- package/dist/node/docs/pocket-family-office.docblock.js +3 -48
- package/dist/node/example.js +1 -42
- package/dist/node/index.js +4 -1660
- package/dist/node/knowledge/sources.sample.js +1 -70
- package/dist/node/operations/index.js +1 -314
- package/dist/node/pocket-family-office.capability.js +1 -19
- package/dist/node/pocket-family-office.feature.js +2 -86
- package/dist/node/telemetry.js +1 -176
- package/dist/node/tenant.sample.js +1 -71
- package/dist/node/workflows/generate-financial-summary.js +1 -58
- package/dist/node/workflows/generate-openbanking-overview.js +1 -52
- package/dist/node/workflows/index.js +1 -467
- package/dist/node/workflows/ingest-email-threads.js +1 -56
- package/dist/node/workflows/process-uploaded-document.js +1 -54
- package/dist/node/workflows/refresh-openbanking-balances.js +1 -64
- package/dist/node/workflows/sync-openbanking-accounts.js +1 -64
- package/dist/node/workflows/sync-openbanking-transactions.js +1 -64
- package/dist/node/workflows/upcoming-payments-reminder.js +1 -62
- package/dist/operations/index.js +1 -314
- package/dist/pocket-family-office.capability.js +1 -19
- package/dist/pocket-family-office.feature.js +2 -86
- package/dist/telemetry.js +1 -176
- package/dist/tenant.sample.js +1 -71
- package/dist/workflows/generate-financial-summary.js +1 -58
- package/dist/workflows/generate-openbanking-overview.js +1 -52
- package/dist/workflows/index.js +1 -467
- package/dist/workflows/ingest-email-threads.js +1 -56
- package/dist/workflows/process-uploaded-document.js +1 -54
- package/dist/workflows/refresh-openbanking-balances.js +1 -64
- package/dist/workflows/sync-openbanking-accounts.js +1 -64
- package/dist/workflows/sync-openbanking-transactions.js +1 -64
- package/dist/workflows/upcoming-payments-reminder.js +1 -62
- package/package.json +7 -7
|
@@ -1,64 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
OwnersEnum,
|
|
4
|
-
StabilityEnum,
|
|
5
|
-
TagsEnum
|
|
6
|
-
} from "@contractspec/lib.contracts-spec";
|
|
7
|
-
import { defineWorkflow } from "@contractspec/lib.contracts-spec/workflow/spec";
|
|
8
|
-
var ACCOUNT_CAPABILITY = {
|
|
9
|
-
key: "openbanking.accounts.read",
|
|
10
|
-
version: "1.0.0"
|
|
11
|
-
};
|
|
12
|
-
var syncOpenBankingAccountsWorkflow = defineWorkflow({
|
|
13
|
-
meta: {
|
|
14
|
-
key: "pfo.workflow.sync-openbanking-accounts",
|
|
15
|
-
version: "1.0.0",
|
|
16
|
-
title: "Synchronise Open Banking Accounts",
|
|
17
|
-
description: "Validates Powens connectivity and synchronises bank account metadata into the canonical ledger.",
|
|
18
|
-
domain: "finance",
|
|
19
|
-
owners: [OwnersEnum.PlatformFinance],
|
|
20
|
-
tags: ["open-banking", "powens", TagsEnum.Automation],
|
|
21
|
-
stability: StabilityEnum.Experimental
|
|
22
|
-
},
|
|
23
|
-
definition: {
|
|
24
|
-
entryStepId: "sync-accounts",
|
|
25
|
-
steps: [
|
|
26
|
-
{
|
|
27
|
-
id: "sync-accounts",
|
|
28
|
-
type: "automation",
|
|
29
|
-
label: "Sync Accounts",
|
|
30
|
-
description: "Refresh linked bank accounts via Powens and upsert canonical BankAccount records.",
|
|
31
|
-
action: {
|
|
32
|
-
operation: { key: "openbanking.accounts.sync", version: "1.0.0" }
|
|
33
|
-
},
|
|
34
|
-
requiredIntegrations: ["primaryOpenBanking"],
|
|
35
|
-
requiredCapabilities: [ACCOUNT_CAPABILITY],
|
|
36
|
-
retry: {
|
|
37
|
-
maxAttempts: 3,
|
|
38
|
-
backoff: "exponential",
|
|
39
|
-
delayMs: 1000
|
|
40
|
-
}
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
id: "fetch-accounts",
|
|
44
|
-
type: "automation",
|
|
45
|
-
label: "Fetch Accounts",
|
|
46
|
-
description: "Retrieve the latest canonical account snapshot for downstream consumers.",
|
|
47
|
-
action: {
|
|
48
|
-
operation: { key: "openbanking.accounts.list", version: "1.0.0" }
|
|
49
|
-
},
|
|
50
|
-
requiredIntegrations: ["primaryOpenBanking"],
|
|
51
|
-
requiredCapabilities: [ACCOUNT_CAPABILITY],
|
|
52
|
-
retry: {
|
|
53
|
-
maxAttempts: 2,
|
|
54
|
-
backoff: "linear",
|
|
55
|
-
delayMs: 750
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
],
|
|
59
|
-
transitions: [{ from: "sync-accounts", to: "fetch-accounts" }]
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
export {
|
|
63
|
-
syncOpenBankingAccountsWorkflow
|
|
64
|
-
};
|
|
1
|
+
import{OwnersEnum as j,StabilityEnum as q,TagsEnum as v}from"@contractspec/lib.contracts-spec";import{defineWorkflow as x}from"@contractspec/lib.contracts-spec/workflow/spec";var h={key:"openbanking.accounts.read",version:"1.0.0"},F=x({meta:{key:"pfo.workflow.sync-openbanking-accounts",version:"1.0.0",title:"Synchronise Open Banking Accounts",description:"Validates Powens connectivity and synchronises bank account metadata into the canonical ledger.",domain:"finance",owners:[j.PlatformFinance],tags:["open-banking","powens",v.Automation],stability:q.Experimental},definition:{entryStepId:"sync-accounts",steps:[{id:"sync-accounts",type:"automation",label:"Sync Accounts",description:"Refresh linked bank accounts via Powens and upsert canonical BankAccount records.",action:{operation:{key:"openbanking.accounts.sync",version:"1.0.0"}},requiredIntegrations:["primaryOpenBanking"],requiredCapabilities:[h],retry:{maxAttempts:3,backoff:"exponential",delayMs:1000}},{id:"fetch-accounts",type:"automation",label:"Fetch Accounts",description:"Retrieve the latest canonical account snapshot for downstream consumers.",action:{operation:{key:"openbanking.accounts.list",version:"1.0.0"}},requiredIntegrations:["primaryOpenBanking"],requiredCapabilities:[h],retry:{maxAttempts:2,backoff:"linear",delayMs:750}}],transitions:[{from:"sync-accounts",to:"fetch-accounts"}]}});export{F as syncOpenBankingAccountsWorkflow};
|
|
@@ -1,64 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
OwnersEnum,
|
|
4
|
-
StabilityEnum,
|
|
5
|
-
TagsEnum
|
|
6
|
-
} from "@contractspec/lib.contracts-spec";
|
|
7
|
-
import { defineWorkflow } from "@contractspec/lib.contracts-spec/workflow/spec";
|
|
8
|
-
var TRANSACTION_CAPABILITY = {
|
|
9
|
-
key: "openbanking.transactions.read",
|
|
10
|
-
version: "1.0.0"
|
|
11
|
-
};
|
|
12
|
-
var syncOpenBankingTransactionsWorkflow = defineWorkflow({
|
|
13
|
-
meta: {
|
|
14
|
-
key: "pfo.workflow.sync-openbanking-transactions",
|
|
15
|
-
version: "1.0.0",
|
|
16
|
-
title: "Synchronise Open Banking Transactions",
|
|
17
|
-
description: "Fetches recent transactions from Powens for each linked account and stores them in the canonical ledger.",
|
|
18
|
-
domain: "finance",
|
|
19
|
-
owners: [OwnersEnum.PlatformFinance],
|
|
20
|
-
tags: ["open-banking", "powens", TagsEnum.Automation],
|
|
21
|
-
stability: StabilityEnum.Experimental
|
|
22
|
-
},
|
|
23
|
-
definition: {
|
|
24
|
-
entryStepId: "sync-transactions",
|
|
25
|
-
steps: [
|
|
26
|
-
{
|
|
27
|
-
id: "sync-transactions",
|
|
28
|
-
type: "automation",
|
|
29
|
-
label: "Sync Transactions",
|
|
30
|
-
description: "Call the Powens provider to pull incremental transactions for active accounts.",
|
|
31
|
-
action: {
|
|
32
|
-
operation: { key: "openbanking.transactions.sync", version: "1.0.0" }
|
|
33
|
-
},
|
|
34
|
-
requiredIntegrations: ["primaryOpenBanking"],
|
|
35
|
-
requiredCapabilities: [TRANSACTION_CAPABILITY],
|
|
36
|
-
retry: {
|
|
37
|
-
maxAttempts: 4,
|
|
38
|
-
backoff: "exponential",
|
|
39
|
-
delayMs: 1500
|
|
40
|
-
}
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
id: "list-transactions",
|
|
44
|
-
type: "automation",
|
|
45
|
-
label: "List Transactions",
|
|
46
|
-
description: "Retrieve the canonical transaction list for reporting and downstream analytics.",
|
|
47
|
-
action: {
|
|
48
|
-
operation: { key: "openbanking.transactions.list", version: "1.0.0" }
|
|
49
|
-
},
|
|
50
|
-
requiredIntegrations: ["primaryOpenBanking"],
|
|
51
|
-
requiredCapabilities: [TRANSACTION_CAPABILITY],
|
|
52
|
-
retry: {
|
|
53
|
-
maxAttempts: 2,
|
|
54
|
-
backoff: "linear",
|
|
55
|
-
delayMs: 1000
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
],
|
|
59
|
-
transitions: [{ from: "sync-transactions", to: "list-transactions" }]
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
export {
|
|
63
|
-
syncOpenBankingTransactionsWorkflow
|
|
64
|
-
};
|
|
1
|
+
import{OwnersEnum as j,StabilityEnum as q,TagsEnum as v}from"@contractspec/lib.contracts-spec";import{defineWorkflow as x}from"@contractspec/lib.contracts-spec/workflow/spec";var h={key:"openbanking.transactions.read",version:"1.0.0"},F=x({meta:{key:"pfo.workflow.sync-openbanking-transactions",version:"1.0.0",title:"Synchronise Open Banking Transactions",description:"Fetches recent transactions from Powens for each linked account and stores them in the canonical ledger.",domain:"finance",owners:[j.PlatformFinance],tags:["open-banking","powens",v.Automation],stability:q.Experimental},definition:{entryStepId:"sync-transactions",steps:[{id:"sync-transactions",type:"automation",label:"Sync Transactions",description:"Call the Powens provider to pull incremental transactions for active accounts.",action:{operation:{key:"openbanking.transactions.sync",version:"1.0.0"}},requiredIntegrations:["primaryOpenBanking"],requiredCapabilities:[h],retry:{maxAttempts:4,backoff:"exponential",delayMs:1500}},{id:"list-transactions",type:"automation",label:"List Transactions",description:"Retrieve the canonical transaction list for reporting and downstream analytics.",action:{operation:{key:"openbanking.transactions.list",version:"1.0.0"}},requiredIntegrations:["primaryOpenBanking"],requiredCapabilities:[h],retry:{maxAttempts:2,backoff:"linear",delayMs:1000}}],transitions:[{from:"sync-transactions",to:"list-transactions"}]}});export{F as syncOpenBankingTransactionsWorkflow};
|
|
@@ -1,62 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
OwnersEnum,
|
|
4
|
-
StabilityEnum,
|
|
5
|
-
TagsEnum
|
|
6
|
-
} from "@contractspec/lib.contracts-spec";
|
|
7
|
-
import { defineWorkflow } from "@contractspec/lib.contracts-spec/workflow/spec";
|
|
8
|
-
var upcomingPaymentsReminderWorkflow = defineWorkflow({
|
|
9
|
-
meta: {
|
|
10
|
-
key: "pfo.workflow.upcoming-payments-reminder",
|
|
11
|
-
version: "1.0.0",
|
|
12
|
-
title: "Schedule Upcoming Payment Reminder",
|
|
13
|
-
description: "Collects payment metadata and schedules multi-channel reminders for bills that are due soon.",
|
|
14
|
-
domain: "finance",
|
|
15
|
-
owners: [OwnersEnum.PlatformFinance],
|
|
16
|
-
tags: ["payments", "reminders", TagsEnum.Automation],
|
|
17
|
-
stability: StabilityEnum.Beta
|
|
18
|
-
},
|
|
19
|
-
definition: {
|
|
20
|
-
entryStepId: "collect",
|
|
21
|
-
steps: [
|
|
22
|
-
{
|
|
23
|
-
id: "collect",
|
|
24
|
-
type: "human",
|
|
25
|
-
label: "Review Upcoming Bill",
|
|
26
|
-
description: "Confirm amount, due date, and preferred delivery channels before scheduling reminder."
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
id: "schedule",
|
|
30
|
-
type: "automation",
|
|
31
|
-
label: "Schedule Reminder",
|
|
32
|
-
action: {
|
|
33
|
-
operation: {
|
|
34
|
-
key: "pfo.reminders.schedule-payment",
|
|
35
|
-
version: "1.0.0"
|
|
36
|
-
}
|
|
37
|
-
},
|
|
38
|
-
requiredIntegrations: [
|
|
39
|
-
"emailOutbound",
|
|
40
|
-
"smsNotifications",
|
|
41
|
-
"calendarScheduling"
|
|
42
|
-
],
|
|
43
|
-
retry: {
|
|
44
|
-
maxAttempts: 2,
|
|
45
|
-
backoff: "linear",
|
|
46
|
-
delayMs: 1000
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
],
|
|
50
|
-
transitions: [
|
|
51
|
-
{
|
|
52
|
-
from: "collect",
|
|
53
|
-
to: "schedule",
|
|
54
|
-
condition: "output?.confirmed === true",
|
|
55
|
-
label: "Reminder confirmed"
|
|
56
|
-
}
|
|
57
|
-
]
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
export {
|
|
61
|
-
upcomingPaymentsReminderWorkflow
|
|
62
|
-
};
|
|
1
|
+
import{OwnersEnum as h,StabilityEnum as j,TagsEnum as q}from"@contractspec/lib.contracts-spec";import{defineWorkflow as v}from"@contractspec/lib.contracts-spec/workflow/spec";var A=v({meta:{key:"pfo.workflow.upcoming-payments-reminder",version:"1.0.0",title:"Schedule Upcoming Payment Reminder",description:"Collects payment metadata and schedules multi-channel reminders for bills that are due soon.",domain:"finance",owners:[h.PlatformFinance],tags:["payments","reminders",q.Automation],stability:j.Beta},definition:{entryStepId:"collect",steps:[{id:"collect",type:"human",label:"Review Upcoming Bill",description:"Confirm amount, due date, and preferred delivery channels before scheduling reminder."},{id:"schedule",type:"automation",label:"Schedule Reminder",action:{operation:{key:"pfo.reminders.schedule-payment",version:"1.0.0"}},requiredIntegrations:["emailOutbound","smsNotifications","calendarScheduling"],retry:{maxAttempts:2,backoff:"linear",delayMs:1000}}],transitions:[{from:"collect",to:"schedule",condition:"output?.confirmed === true",label:"Reminder confirmed"}]}});export{A as upcomingPaymentsReminderWorkflow};
|
package/dist/operations/index.js
CHANGED
|
@@ -1,315 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
|
|
3
|
-
import { OPENBANKING_TELEMETRY_EVENTS } from "@contractspec/lib.contracts-integrations";
|
|
4
|
-
import {
|
|
5
|
-
defineCommand,
|
|
6
|
-
defineQuery
|
|
7
|
-
} from "@contractspec/lib.contracts-spec";
|
|
8
|
-
import {
|
|
9
|
-
OwnersEnum,
|
|
10
|
-
StabilityEnum,
|
|
11
|
-
TagsEnum
|
|
12
|
-
} from "@contractspec/lib.contracts-spec/ownership";
|
|
13
|
-
import {
|
|
14
|
-
defineEnum,
|
|
15
|
-
defineSchemaModel,
|
|
16
|
-
ScalarTypeEnum
|
|
17
|
-
} from "@contractspec/lib.schema";
|
|
18
|
-
var SourceEnum = defineEnum("Source", ["upload", "email", "sync"]);
|
|
19
|
-
var ChannelEnum = defineEnum("Channel", ["email", "sms", "both"]);
|
|
20
|
-
var PeriodEnum = defineEnum("Period", ["P7d", "P30d", "P90d"]);
|
|
21
|
-
var ObPeriodEnum = defineEnum("ObPeriod", ["Pweek", "Pmonth", "Pquarter"]);
|
|
22
|
-
var UploadDocumentInputModel = defineSchemaModel({
|
|
23
|
-
name: "UploadDocumentInput",
|
|
24
|
-
fields: {
|
|
25
|
-
bucket: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },
|
|
26
|
-
objectKey: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },
|
|
27
|
-
mimeType: { type: ScalarTypeEnum.NonEmptyString(), isOptional: false },
|
|
28
|
-
bytes: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },
|
|
29
|
-
tags: {
|
|
30
|
-
type: ScalarTypeEnum.String_unsecure(),
|
|
31
|
-
isOptional: false,
|
|
32
|
-
isArray: true
|
|
33
|
-
},
|
|
34
|
-
uploadedAt: { type: ScalarTypeEnum.Date(), isOptional: false },
|
|
35
|
-
source: { type: SourceEnum, isOptional: false }
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
var UploadDocumentOutputModel = defineSchemaModel({
|
|
39
|
-
name: "UploadDocumentOutput",
|
|
40
|
-
fields: {
|
|
41
|
-
documentId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
42
|
-
ingestionJobId: {
|
|
43
|
-
type: ScalarTypeEnum.String_unsecure(),
|
|
44
|
-
isOptional: false
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
var uploadDocumentContract = defineCommand({
|
|
49
|
-
meta: {
|
|
50
|
-
key: "pfo.documents.upload",
|
|
51
|
-
version: "1.0.0",
|
|
52
|
-
description: "Stores an object in tenant storage and schedules ingestion into the knowledge base.",
|
|
53
|
-
goal: "Allow users to ingest financial documents for processing.",
|
|
54
|
-
context: "Part of the finance domain. Documents are uploaded to object storage and then processed by the ingestion pipeline.",
|
|
55
|
-
owners: [OwnersEnum.PlatformFinance],
|
|
56
|
-
tags: ["documents", "ingestion", TagsEnum.Guide],
|
|
57
|
-
stability: StabilityEnum.Experimental
|
|
58
|
-
},
|
|
59
|
-
io: {
|
|
60
|
-
input: UploadDocumentInputModel,
|
|
61
|
-
output: UploadDocumentOutputModel
|
|
62
|
-
},
|
|
63
|
-
policy: {
|
|
64
|
-
auth: "user",
|
|
65
|
-
rateLimit: {
|
|
66
|
-
rpm: 30,
|
|
67
|
-
key: "user"
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
var PaymentReminderInputModel = defineSchemaModel({
|
|
72
|
-
name: "PaymentReminderInput",
|
|
73
|
-
fields: {
|
|
74
|
-
billId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
75
|
-
recipientEmail: { type: ScalarTypeEnum.EmailAddress(), isOptional: false },
|
|
76
|
-
recipientPhone: {
|
|
77
|
-
type: ScalarTypeEnum.String_unsecure(),
|
|
78
|
-
isOptional: true
|
|
79
|
-
},
|
|
80
|
-
dueDate: { type: ScalarTypeEnum.Date(), isOptional: false },
|
|
81
|
-
amountCents: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },
|
|
82
|
-
currency: { type: ScalarTypeEnum.Currency(), isOptional: false },
|
|
83
|
-
channel: { type: ChannelEnum, isOptional: false },
|
|
84
|
-
memo: { type: ScalarTypeEnum.String_unsecure(), isOptional: true }
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
var PaymentReminderOutputModel = defineSchemaModel({
|
|
88
|
-
name: "PaymentReminderOutput",
|
|
89
|
-
fields: {
|
|
90
|
-
reminderId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
91
|
-
scheduledAt: { type: ScalarTypeEnum.Date(), isOptional: false }
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
var schedulePaymentReminderContract = defineCommand({
|
|
95
|
-
meta: {
|
|
96
|
-
key: "pfo.reminders.schedule-payment",
|
|
97
|
-
version: "1.0.0",
|
|
98
|
-
description: "Queues outbound email/SMS reminders for upcoming bills and adds an optional calendar hold.",
|
|
99
|
-
goal: "Ensure bills are paid on time by notifying users.",
|
|
100
|
-
context: "Finance automation. Reminders are sent via configured channels (email, SMS).",
|
|
101
|
-
owners: [OwnersEnum.PlatformFinance],
|
|
102
|
-
tags: ["payments", "reminders", TagsEnum.Automation],
|
|
103
|
-
stability: StabilityEnum.Beta
|
|
104
|
-
},
|
|
105
|
-
io: {
|
|
106
|
-
input: PaymentReminderInputModel,
|
|
107
|
-
output: PaymentReminderOutputModel
|
|
108
|
-
},
|
|
109
|
-
policy: {
|
|
110
|
-
auth: "user"
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
|
-
var FinancialSummaryInputModel = defineSchemaModel({
|
|
114
|
-
name: "FinancialSummaryInput",
|
|
115
|
-
fields: {
|
|
116
|
-
period: { type: PeriodEnum, isOptional: false },
|
|
117
|
-
includeVoiceSummary: { type: ScalarTypeEnum.Boolean(), isOptional: false }
|
|
118
|
-
}
|
|
119
|
-
});
|
|
120
|
-
var SummaryHighlightModel = defineSchemaModel({
|
|
121
|
-
name: "SummaryHighlight",
|
|
122
|
-
fields: {
|
|
123
|
-
label: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
124
|
-
value: { type: ScalarTypeEnum.String_unsecure(), isOptional: false }
|
|
125
|
-
}
|
|
126
|
-
});
|
|
127
|
-
var FinancialSummaryOutputModel = defineSchemaModel({
|
|
128
|
-
name: "FinancialSummaryOutput",
|
|
129
|
-
fields: {
|
|
130
|
-
summaryId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
131
|
-
generatedAt: { type: ScalarTypeEnum.Date(), isOptional: false },
|
|
132
|
-
markdown: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
133
|
-
highlights: {
|
|
134
|
-
type: SummaryHighlightModel,
|
|
135
|
-
isOptional: false,
|
|
136
|
-
isArray: true
|
|
137
|
-
},
|
|
138
|
-
cashflowDelta: { type: ScalarTypeEnum.Float_unsecure(), isOptional: false }
|
|
139
|
-
}
|
|
140
|
-
});
|
|
141
|
-
var generateFinancialSummaryContract = defineQuery({
|
|
142
|
-
meta: {
|
|
143
|
-
key: "pfo.summary.generate",
|
|
144
|
-
version: "1.0.0",
|
|
145
|
-
description: "Runs RAG over financial documents and email threads to provide a natural-language summary with key metrics.",
|
|
146
|
-
goal: "Provide a quick overview of financial status and recent activity.",
|
|
147
|
-
context: "Uses RAG over ingested knowledge. Summaries can be dispatched or viewed in app.",
|
|
148
|
-
owners: [OwnersEnum.PlatformFinance],
|
|
149
|
-
tags: ["summary", "ai", TagsEnum.Automation],
|
|
150
|
-
stability: StabilityEnum.Beta
|
|
151
|
-
},
|
|
152
|
-
io: {
|
|
153
|
-
input: FinancialSummaryInputModel,
|
|
154
|
-
output: FinancialSummaryOutputModel
|
|
155
|
-
},
|
|
156
|
-
policy: {
|
|
157
|
-
auth: "user"
|
|
158
|
-
}
|
|
159
|
-
});
|
|
160
|
-
var SyncEmailThreadsInputModel = defineSchemaModel({
|
|
161
|
-
name: "SyncEmailThreadsInput",
|
|
162
|
-
fields: {
|
|
163
|
-
labelIds: {
|
|
164
|
-
type: ScalarTypeEnum.String_unsecure(),
|
|
165
|
-
isOptional: false,
|
|
166
|
-
isArray: true
|
|
167
|
-
},
|
|
168
|
-
maxThreads: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },
|
|
169
|
-
syncSinceMinutes: {
|
|
170
|
-
type: ScalarTypeEnum.Int_unsecure(),
|
|
171
|
-
isOptional: false
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
});
|
|
175
|
-
var SyncEmailThreadsOutputModel = defineSchemaModel({
|
|
176
|
-
name: "SyncEmailThreadsOutput",
|
|
177
|
-
fields: {
|
|
178
|
-
syncedThreads: { type: ScalarTypeEnum.Int_unsecure(), isOptional: false },
|
|
179
|
-
lastMessageAt: { type: ScalarTypeEnum.Date(), isOptional: true }
|
|
180
|
-
}
|
|
181
|
-
});
|
|
182
|
-
var syncEmailThreadsContract = defineCommand({
|
|
183
|
-
meta: {
|
|
184
|
-
key: "pfo.email.sync-threads",
|
|
185
|
-
version: "1.0.0",
|
|
186
|
-
description: "Triggers ingestion of Gmail threads into the operational knowledge space.",
|
|
187
|
-
goal: "Keep knowledge base up to date with email communications.",
|
|
188
|
-
context: "Syncs from Gmail integration. Only includes threads matching configured labels.",
|
|
189
|
-
owners: [OwnersEnum.PlatformMessaging],
|
|
190
|
-
tags: ["gmail", "knowledge", TagsEnum.Automation],
|
|
191
|
-
stability: StabilityEnum.Beta
|
|
192
|
-
},
|
|
193
|
-
io: {
|
|
194
|
-
input: SyncEmailThreadsInputModel,
|
|
195
|
-
output: SyncEmailThreadsOutputModel
|
|
196
|
-
},
|
|
197
|
-
policy: {
|
|
198
|
-
auth: "user"
|
|
199
|
-
}
|
|
200
|
-
});
|
|
201
|
-
var SummaryDispatchInputModel = defineSchemaModel({
|
|
202
|
-
name: "SummaryDispatchInput",
|
|
203
|
-
fields: {
|
|
204
|
-
summaryId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
205
|
-
recipientEmail: { type: ScalarTypeEnum.EmailAddress(), isOptional: false },
|
|
206
|
-
recipientName: {
|
|
207
|
-
type: ScalarTypeEnum.String_unsecure(),
|
|
208
|
-
isOptional: true
|
|
209
|
-
},
|
|
210
|
-
includeVoice: { type: ScalarTypeEnum.Boolean(), isOptional: false },
|
|
211
|
-
voiceRecipient: {
|
|
212
|
-
type: ScalarTypeEnum.String_unsecure(),
|
|
213
|
-
isOptional: true
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
});
|
|
217
|
-
var SummaryDispatchOutputModel = defineSchemaModel({
|
|
218
|
-
name: "SummaryDispatchOutput",
|
|
219
|
-
fields: {
|
|
220
|
-
dispatchId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
221
|
-
emailSent: { type: ScalarTypeEnum.Boolean(), isOptional: false },
|
|
222
|
-
voiceUrl: { type: ScalarTypeEnum.String_unsecure(), isOptional: true }
|
|
223
|
-
}
|
|
224
|
-
});
|
|
225
|
-
var dispatchFinancialSummaryContract = defineCommand({
|
|
226
|
-
meta: {
|
|
227
|
-
key: "pfo.summary.dispatch",
|
|
228
|
-
version: "1.0.0",
|
|
229
|
-
description: "Delivers the generated summary via email and optionally synthesises a voice note.",
|
|
230
|
-
goal: "Deliver financial insights to users proactively.",
|
|
231
|
-
context: "Dispatches summaries generated by pfo.summary.generate via email or voice.",
|
|
232
|
-
owners: [OwnersEnum.PlatformMessaging],
|
|
233
|
-
tags: ["summary", "communications", TagsEnum.Automation],
|
|
234
|
-
stability: StabilityEnum.Experimental
|
|
235
|
-
},
|
|
236
|
-
io: {
|
|
237
|
-
input: SummaryDispatchInputModel,
|
|
238
|
-
output: SummaryDispatchOutputModel
|
|
239
|
-
},
|
|
240
|
-
policy: {
|
|
241
|
-
auth: "user"
|
|
242
|
-
}
|
|
243
|
-
});
|
|
244
|
-
var OpenBankingOverviewInputModel = defineSchemaModel({
|
|
245
|
-
name: "OpenBankingOverviewInput",
|
|
246
|
-
fields: {
|
|
247
|
-
tenantId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
|
|
248
|
-
accountIds: {
|
|
249
|
-
type: ScalarTypeEnum.String_unsecure(),
|
|
250
|
-
isOptional: true,
|
|
251
|
-
isArray: true
|
|
252
|
-
},
|
|
253
|
-
period: { type: ObPeriodEnum, isOptional: false },
|
|
254
|
-
asOf: { type: ScalarTypeEnum.Date(), isOptional: true },
|
|
255
|
-
includeCategories: { type: ScalarTypeEnum.Boolean(), isOptional: false },
|
|
256
|
-
includeCashflowTrend: { type: ScalarTypeEnum.Boolean(), isOptional: false }
|
|
257
|
-
}
|
|
258
|
-
});
|
|
259
|
-
var OpenBankingOverviewOutputModel = defineSchemaModel({
|
|
260
|
-
name: "OpenBankingOverviewOutput",
|
|
261
|
-
fields: {
|
|
262
|
-
knowledgeEntryId: {
|
|
263
|
-
type: ScalarTypeEnum.String_unsecure(),
|
|
264
|
-
isOptional: false
|
|
265
|
-
},
|
|
266
|
-
periodStart: { type: ScalarTypeEnum.Date(), isOptional: false },
|
|
267
|
-
periodEnd: { type: ScalarTypeEnum.Date(), isOptional: false },
|
|
268
|
-
generatedAt: { type: ScalarTypeEnum.Date(), isOptional: false },
|
|
269
|
-
summaryPath: { type: ScalarTypeEnum.String_unsecure(), isOptional: true }
|
|
270
|
-
}
|
|
271
|
-
});
|
|
272
|
-
var generateOpenBankingOverviewContract = defineCommand({
|
|
273
|
-
meta: {
|
|
274
|
-
key: "pfo.openbanking.generate-overview",
|
|
275
|
-
version: "1.0.0",
|
|
276
|
-
description: "Aggregates balances and transactions into a derived financial overview stored in the knowledge layer.",
|
|
277
|
-
goal: "Create a periodic financial snapshot.",
|
|
278
|
-
context: "Aggregates data from open banking integration into a document.",
|
|
279
|
-
owners: [OwnersEnum.PlatformFinance],
|
|
280
|
-
tags: ["open-banking", "summary", TagsEnum.Automation],
|
|
281
|
-
stability: StabilityEnum.Experimental
|
|
282
|
-
},
|
|
283
|
-
io: {
|
|
284
|
-
input: OpenBankingOverviewInputModel,
|
|
285
|
-
output: OpenBankingOverviewOutputModel
|
|
286
|
-
},
|
|
287
|
-
policy: {
|
|
288
|
-
auth: "user"
|
|
289
|
-
},
|
|
290
|
-
telemetry: {
|
|
291
|
-
success: {
|
|
292
|
-
event: {
|
|
293
|
-
key: OPENBANKING_TELEMETRY_EVENTS.overviewGenerated,
|
|
294
|
-
version: "1.0.0"
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
});
|
|
299
|
-
var pocketFamilyOfficeContracts = {
|
|
300
|
-
"pfo.documents.upload": uploadDocumentContract,
|
|
301
|
-
"pfo.reminders.schedule-payment": schedulePaymentReminderContract,
|
|
302
|
-
"pfo.summary.generate": generateFinancialSummaryContract,
|
|
303
|
-
"pfo.summary.dispatch": dispatchFinancialSummaryContract,
|
|
304
|
-
"pfo.email.sync-threads": syncEmailThreadsContract,
|
|
305
|
-
"pfo.openbanking.generate-overview": generateOpenBankingOverviewContract
|
|
306
|
-
};
|
|
307
|
-
export {
|
|
308
|
-
uploadDocumentContract,
|
|
309
|
-
syncEmailThreadsContract,
|
|
310
|
-
schedulePaymentReminderContract,
|
|
311
|
-
pocketFamilyOfficeContracts,
|
|
312
|
-
generateOpenBankingOverviewContract,
|
|
313
|
-
generateFinancialSummaryContract,
|
|
314
|
-
dispatchFinancialSummaryContract
|
|
315
|
-
};
|
|
2
|
+
import{OPENBANKING_TELEMETRY_EVENTS as H}from"@contractspec/lib.contracts-integrations";import{defineCommand as z,defineQuery as J}from"@contractspec/lib.contracts-spec";import{OwnersEnum as j,StabilityEnum as q,TagsEnum as x}from"@contractspec/lib.contracts-spec/ownership";import{defineEnum as D,defineSchemaModel as f,ScalarTypeEnum as b}from"@contractspec/lib.schema";var Q=D("Source",["upload","email","sync"]),U=D("Channel",["email","sms","both"]),W=D("Period",["P7d","P30d","P90d"]),X=D("ObPeriod",["Pweek","Pmonth","Pquarter"]),Z=f({name:"UploadDocumentInput",fields:{bucket:{type:b.NonEmptyString(),isOptional:!1},objectKey:{type:b.NonEmptyString(),isOptional:!1},mimeType:{type:b.NonEmptyString(),isOptional:!1},bytes:{type:b.Int_unsecure(),isOptional:!1},tags:{type:b.String_unsecure(),isOptional:!1,isArray:!0},uploadedAt:{type:b.Date(),isOptional:!1},source:{type:Q,isOptional:!1}}}),$=f({name:"UploadDocumentOutput",fields:{documentId:{type:b.String_unsecure(),isOptional:!1},ingestionJobId:{type:b.String_unsecure(),isOptional:!1}}}),k=z({meta:{key:"pfo.documents.upload",version:"1.0.0",description:"Stores an object in tenant storage and schedules ingestion into the knowledge base.",goal:"Allow users to ingest financial documents for processing.",context:"Part of the finance domain. Documents are uploaded to object storage and then processed by the ingestion pipeline.",owners:[j.PlatformFinance],tags:["documents","ingestion",x.Guide],stability:q.Experimental},io:{input:Z,output:$},policy:{auth:"user",rateLimit:{rpm:30,key:"user"}}}),A=f({name:"PaymentReminderInput",fields:{billId:{type:b.String_unsecure(),isOptional:!1},recipientEmail:{type:b.EmailAddress(),isOptional:!1},recipientPhone:{type:b.String_unsecure(),isOptional:!0},dueDate:{type:b.Date(),isOptional:!1},amountCents:{type:b.Int_unsecure(),isOptional:!1},currency:{type:b.Currency(),isOptional:!1},channel:{type:U,isOptional:!1},memo:{type:b.String_unsecure(),isOptional:!0}}}),F=f({name:"PaymentReminderOutput",fields:{reminderId:{type:b.String_unsecure(),isOptional:!1},scheduledAt:{type:b.Date(),isOptional:!1}}}),G=z({meta:{key:"pfo.reminders.schedule-payment",version:"1.0.0",description:"Queues outbound email/SMS reminders for upcoming bills and adds an optional calendar hold.",goal:"Ensure bills are paid on time by notifying users.",context:"Finance automation. Reminders are sent via configured channels (email, SMS).",owners:[j.PlatformFinance],tags:["payments","reminders",x.Automation],stability:q.Beta},io:{input:A,output:F},policy:{auth:"user"}}),K=f({name:"FinancialSummaryInput",fields:{period:{type:W,isOptional:!1},includeVoiceSummary:{type:b.Boolean(),isOptional:!1}}}),L=f({name:"SummaryHighlight",fields:{label:{type:b.String_unsecure(),isOptional:!1},value:{type:b.String_unsecure(),isOptional:!1}}}),V=f({name:"FinancialSummaryOutput",fields:{summaryId:{type:b.String_unsecure(),isOptional:!1},generatedAt:{type:b.Date(),isOptional:!1},markdown:{type:b.String_unsecure(),isOptional:!1},highlights:{type:L,isOptional:!1,isArray:!0},cashflowDelta:{type:b.Float_unsecure(),isOptional:!1}}}),Y=J({meta:{key:"pfo.summary.generate",version:"1.0.0",description:"Runs RAG over financial documents and email threads to provide a natural-language summary with key metrics.",goal:"Provide a quick overview of financial status and recent activity.",context:"Uses RAG over ingested knowledge. Summaries can be dispatched or viewed in app.",owners:[j.PlatformFinance],tags:["summary","ai",x.Automation],stability:q.Beta},io:{input:K,output:V},policy:{auth:"user"}}),g=f({name:"SyncEmailThreadsInput",fields:{labelIds:{type:b.String_unsecure(),isOptional:!1,isArray:!0},maxThreads:{type:b.Int_unsecure(),isOptional:!1},syncSinceMinutes:{type:b.Int_unsecure(),isOptional:!1}}}),v=f({name:"SyncEmailThreadsOutput",fields:{syncedThreads:{type:b.Int_unsecure(),isOptional:!1},lastMessageAt:{type:b.Date(),isOptional:!0}}}),B=z({meta:{key:"pfo.email.sync-threads",version:"1.0.0",description:"Triggers ingestion of Gmail threads into the operational knowledge space.",goal:"Keep knowledge base up to date with email communications.",context:"Syncs from Gmail integration. Only includes threads matching configured labels.",owners:[j.PlatformMessaging],tags:["gmail","knowledge",x.Automation],stability:q.Beta},io:{input:g,output:v},policy:{auth:"user"}}),P=f({name:"SummaryDispatchInput",fields:{summaryId:{type:b.String_unsecure(),isOptional:!1},recipientEmail:{type:b.EmailAddress(),isOptional:!1},recipientName:{type:b.String_unsecure(),isOptional:!0},includeVoice:{type:b.Boolean(),isOptional:!1},voiceRecipient:{type:b.String_unsecure(),isOptional:!0}}}),R=f({name:"SummaryDispatchOutput",fields:{dispatchId:{type:b.String_unsecure(),isOptional:!1},emailSent:{type:b.Boolean(),isOptional:!1},voiceUrl:{type:b.String_unsecure(),isOptional:!0}}}),_=z({meta:{key:"pfo.summary.dispatch",version:"1.0.0",description:"Delivers the generated summary via email and optionally synthesises a voice note.",goal:"Deliver financial insights to users proactively.",context:"Dispatches summaries generated by pfo.summary.generate via email or voice.",owners:[j.PlatformMessaging],tags:["summary","communications",x.Automation],stability:q.Experimental},io:{input:P,output:R},policy:{auth:"user"}}),C=f({name:"OpenBankingOverviewInput",fields:{tenantId:{type:b.String_unsecure(),isOptional:!1},accountIds:{type:b.String_unsecure(),isOptional:!0,isArray:!0},period:{type:X,isOptional:!1},asOf:{type:b.Date(),isOptional:!0},includeCategories:{type:b.Boolean(),isOptional:!1},includeCashflowTrend:{type:b.Boolean(),isOptional:!1}}}),h=f({name:"OpenBankingOverviewOutput",fields:{knowledgeEntryId:{type:b.String_unsecure(),isOptional:!1},periodStart:{type:b.Date(),isOptional:!1},periodEnd:{type:b.Date(),isOptional:!1},generatedAt:{type:b.Date(),isOptional:!1},summaryPath:{type:b.String_unsecure(),isOptional:!0}}}),I=z({meta:{key:"pfo.openbanking.generate-overview",version:"1.0.0",description:"Aggregates balances and transactions into a derived financial overview stored in the knowledge layer.",goal:"Create a periodic financial snapshot.",context:"Aggregates data from open banking integration into a document.",owners:[j.PlatformFinance],tags:["open-banking","summary",x.Automation],stability:q.Experimental},io:{input:C,output:h},policy:{auth:"user"},telemetry:{success:{event:{key:H.overviewGenerated,version:"1.0.0"}}}}),M={"pfo.documents.upload":k,"pfo.reminders.schedule-payment":G,"pfo.summary.generate":Y,"pfo.summary.dispatch":_,"pfo.email.sync-threads":B,"pfo.openbanking.generate-overview":I};export{k as uploadDocumentContract,B as syncEmailThreadsContract,G as schedulePaymentReminderContract,M as pocketFamilyOfficeContracts,I as generateOpenBankingOverviewContract,Y as generateFinancialSummaryContract,_ as dispatchFinancialSummaryContract};
|
|
@@ -1,20 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
defineCapability,
|
|
5
|
-
StabilityEnum
|
|
6
|
-
} from "@contractspec/lib.contracts-spec";
|
|
7
|
-
var PocketFamilyOfficeCapability = defineCapability({
|
|
8
|
-
meta: {
|
|
9
|
-
key: "pocket-family-office",
|
|
10
|
-
version: "1.0.0",
|
|
11
|
-
kind: "ui",
|
|
12
|
-
stability: StabilityEnum.Experimental,
|
|
13
|
-
description: "Personal family office management",
|
|
14
|
-
owners: ["@platform.finance"],
|
|
15
|
-
tags: ["family-office", "wealth", "personal"]
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
|
-
export {
|
|
19
|
-
PocketFamilyOfficeCapability
|
|
20
|
-
};
|
|
2
|
+
import{defineCapability as g,StabilityEnum as h}from"@contractspec/lib.contracts-spec";var k=g({meta:{key:"pocket-family-office",version:"1.0.0",kind:"ui",stability:h.Experimental,description:"Personal family office management",owners:["@platform.finance"],tags:["family-office","wealth","personal"]}});export{k as PocketFamilyOfficeCapability};
|
|
@@ -1,83 +1,5 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
|
|
3
|
-
import { defineFeature } from "@contractspec/lib.contracts-spec";
|
|
4
|
-
var PocketFamilyOfficeFeature = defineFeature({
|
|
5
|
-
meta: {
|
|
6
|
-
key: "pocket-family-office",
|
|
7
|
-
version: "1.0.0",
|
|
8
|
-
title: "Pocket Family Office",
|
|
9
|
-
description: "Personal finance automation with document ingestion, open banking, and AI summaries",
|
|
10
|
-
domain: "finance",
|
|
11
|
-
owners: ["@platform.finance"],
|
|
12
|
-
tags: [
|
|
13
|
-
"finance",
|
|
14
|
-
"open-banking",
|
|
15
|
-
"documents",
|
|
16
|
-
"automation",
|
|
17
|
-
"family-office"
|
|
18
|
-
],
|
|
19
|
-
stability: "experimental"
|
|
20
|
-
},
|
|
21
|
-
operations: [
|
|
22
|
-
{ key: "pfo.documents.upload", version: "1.0.0" },
|
|
23
|
-
{ key: "pfo.reminders.schedule-payment", version: "1.0.0" },
|
|
24
|
-
{ key: "pfo.summary.generate", version: "1.0.0" },
|
|
25
|
-
{ key: "pfo.email.sync-threads", version: "1.0.0" },
|
|
26
|
-
{ key: "pfo.summary.dispatch", version: "1.0.0" },
|
|
27
|
-
{ key: "pfo.openbanking.generate-overview", version: "1.0.0" }
|
|
28
|
-
],
|
|
29
|
-
events: [],
|
|
30
|
-
presentations: [],
|
|
31
|
-
opToPresentation: [],
|
|
32
|
-
presentationsTargets: [],
|
|
33
|
-
capabilities: {
|
|
34
|
-
provides: [{ key: "pocket-family-office", version: "1.0.0" }],
|
|
35
|
-
requires: [
|
|
36
|
-
{ key: "identity", version: "1.0.0" },
|
|
37
|
-
{ key: "openbanking", version: "1.0.0" }
|
|
38
|
-
]
|
|
39
|
-
},
|
|
40
|
-
workflows: [
|
|
41
|
-
{ key: "pfo.workflow.sync-openbanking-accounts", version: "1.0.0" },
|
|
42
|
-
{ key: "pfo.workflow.sync-openbanking-transactions", version: "1.0.0" },
|
|
43
|
-
{ key: "pfo.workflow.refresh-openbanking-balances", version: "1.0.0" },
|
|
44
|
-
{ key: "pfo.workflow.generate-openbanking-overview", version: "1.0.0" },
|
|
45
|
-
{ key: "pfo.workflow.process-uploaded-document", version: "1.0.0" },
|
|
46
|
-
{ key: "pfo.workflow.upcoming-payments-reminder", version: "1.0.0" },
|
|
47
|
-
{ key: "pfo.workflow.generate-financial-summary", version: "1.0.0" },
|
|
48
|
-
{ key: "pfo.workflow.ingest-email-threads", version: "1.0.0" }
|
|
49
|
-
],
|
|
50
|
-
knowledge: [
|
|
51
|
-
{ key: "knowledge.financial-docs", version: "1.0.0" },
|
|
52
|
-
{ key: "knowledge.email-threads", version: "1.0.0" },
|
|
53
|
-
{ key: "knowledge.financial-overview", version: "1.0.0" }
|
|
54
|
-
],
|
|
55
|
-
telemetry: [{ key: "pfo.telemetry", version: "1.0.0" }],
|
|
56
|
-
policies: [{ key: "pfo.policy.tenancy", version: "1.0.0" }],
|
|
57
|
-
integrations: [
|
|
58
|
-
{ key: "pfo.integration.openbanking", version: "1.0.0" },
|
|
59
|
-
{ key: "pfo.integration.llm", version: "1.0.0" }
|
|
60
|
-
],
|
|
61
|
-
jobs: [
|
|
62
|
-
{ key: "pfo.job.doc-processing", version: "1.0.0" },
|
|
63
|
-
{ key: "pfo.job.reminder-dispatch", version: "1.0.0" }
|
|
64
|
-
],
|
|
65
|
-
docs: [
|
|
66
|
-
"docs.examples.pocket-family-office.goal",
|
|
67
|
-
"docs.examples.pocket-family-office.usage",
|
|
68
|
-
"docs.examples.pocket-family-office.reference"
|
|
69
|
-
]
|
|
70
|
-
});
|
|
71
|
-
var tech_contracts_vertical_pocket_family_office_DocBlocks = [
|
|
72
|
-
{
|
|
73
|
-
id: "docs.tech.contracts.vertical-pocket-family-office",
|
|
74
|
-
title: "Pocket Family Office Vertical",
|
|
75
|
-
summary: "Pocket Family Office is a ContractSpec reference vertical that",
|
|
76
|
-
kind: "reference",
|
|
77
|
-
visibility: "public",
|
|
78
|
-
route: "/docs/tech/contracts/vertical-pocket-family-office",
|
|
79
|
-
tags: ["tech", "contracts", "vertical-pocket-family-office"],
|
|
80
|
-
body: `# Pocket Family Office Vertical
|
|
2
|
+
import{defineFeature as g}from"@contractspec/lib.contracts-spec";var j=g({meta:{key:"pocket-family-office",version:"1.0.0",title:"Pocket Family Office",description:"Personal finance automation with document ingestion, open banking, and AI summaries",domain:"finance",owners:["@platform.finance"],tags:["finance","open-banking","documents","automation","family-office"],stability:"experimental"},operations:[{key:"pfo.documents.upload",version:"1.0.0"},{key:"pfo.reminders.schedule-payment",version:"1.0.0"},{key:"pfo.summary.generate",version:"1.0.0"},{key:"pfo.email.sync-threads",version:"1.0.0"},{key:"pfo.summary.dispatch",version:"1.0.0"},{key:"pfo.openbanking.generate-overview",version:"1.0.0"}],events:[],presentations:[],opToPresentation:[],presentationsTargets:[],capabilities:{provides:[{key:"pocket-family-office",version:"1.0.0"}],requires:[{key:"identity",version:"1.0.0"},{key:"openbanking",version:"1.0.0"}]},workflows:[{key:"pfo.workflow.sync-openbanking-accounts",version:"1.0.0"},{key:"pfo.workflow.sync-openbanking-transactions",version:"1.0.0"},{key:"pfo.workflow.refresh-openbanking-balances",version:"1.0.0"},{key:"pfo.workflow.generate-openbanking-overview",version:"1.0.0"},{key:"pfo.workflow.process-uploaded-document",version:"1.0.0"},{key:"pfo.workflow.upcoming-payments-reminder",version:"1.0.0"},{key:"pfo.workflow.generate-financial-summary",version:"1.0.0"},{key:"pfo.workflow.ingest-email-threads",version:"1.0.0"}],knowledge:[{key:"knowledge.financial-docs",version:"1.0.0"},{key:"knowledge.email-threads",version:"1.0.0"},{key:"knowledge.financial-overview",version:"1.0.0"}],telemetry:[{key:"pfo.telemetry",version:"1.0.0"}],policies:[{key:"pfo.policy.tenancy",version:"1.0.0"}],integrations:[{key:"pfo.integration.openbanking",version:"1.0.0"},{key:"pfo.integration.llm",version:"1.0.0"}],jobs:[{key:"pfo.job.doc-processing",version:"1.0.0"},{key:"pfo.job.reminder-dispatch",version:"1.0.0"}],docs:["docs.examples.pocket-family-office.goal","docs.examples.pocket-family-office.usage","docs.examples.pocket-family-office.reference"]}),k=[{id:"docs.tech.contracts.vertical-pocket-family-office",title:"Pocket Family Office Vertical",summary:"Pocket Family Office is a ContractSpec reference vertical that",kind:"reference",visibility:"public",route:"/docs/tech/contracts/vertical-pocket-family-office",tags:["tech","contracts","vertical-pocket-family-office"],body:`# Pocket Family Office Vertical
|
|
81
3
|
|
|
82
4
|
Pocket Family Office is a ContractSpec reference vertical that
|
|
83
5
|
demonstrates finance automation atop the integration and knowledge
|
|
@@ -182,10 +104,4 @@ tenant-specific IDs/secret references before deploying.
|
|
|
182
104
|
|
|
183
105
|
|
|
184
106
|
|
|
185
|
-
`
|
|
186
|
-
}
|
|
187
|
-
];
|
|
188
|
-
export {
|
|
189
|
-
tech_contracts_vertical_pocket_family_office_DocBlocks,
|
|
190
|
-
PocketFamilyOfficeFeature
|
|
191
|
-
};
|
|
107
|
+
`}];export{k as tech_contracts_vertical_pocket_family_office_DocBlocks,j as PocketFamilyOfficeFeature};
|