remosidian 0.1.13 → 0.1.14
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/CHANGELOG.md +4 -0
- package/dist/remosidian.mjs +155 -10
- package/dist/remoteDirect/vibelet-remote-direct-darwin-amd64 +0 -0
- package/dist/remoteDirect/vibelet-remote-direct-darwin-arm64 +0 -0
- package/dist/remoteDirect/vibelet-remote-direct-linux-amd64 +0 -0
- package/dist/remoteDirect/vibelet-remote-direct-linux-arm64 +0 -0
- package/dist/remoteDirect/vibelet-remote-direct-win32-amd64.exe +0 -0
- package/dist/remoteDirect/vibelet-remote-direct-win32-arm64.exe +0 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
package/dist/remosidian.mjs
CHANGED
|
@@ -16644,6 +16644,8 @@ function isAssistantSummary(value) {
|
|
|
16644
16644
|
v.focus.every((goal) => goal &&
|
|
16645
16645
|
typeof goal.id === 'string' &&
|
|
16646
16646
|
typeof goal.title === 'string' &&
|
|
16647
|
+
typeof goal.source === 'string' &&
|
|
16648
|
+
['project', 'theme'].includes(goal.kind) &&
|
|
16647
16649
|
['active', 'paused', 'blocked', 'review', 'completed'].includes(goal.status) &&
|
|
16648
16650
|
Number.isSafeInteger(goal.priority) &&
|
|
16649
16651
|
typeof goal.summary === 'string' &&
|
|
@@ -16658,11 +16660,39 @@ function isAssistantReply(value) {
|
|
|
16658
16660
|
v.text.length <= 30000 &&
|
|
16659
16661
|
Number.isFinite(v.checkedAt) &&
|
|
16660
16662
|
(v.receiptId === undefined || typeof v.receiptId === 'string') &&
|
|
16663
|
+
(v.runtime === undefined ||
|
|
16664
|
+
(typeof v.runtime === 'object' &&
|
|
16665
|
+
v.runtime !== null &&
|
|
16666
|
+
['cli', 'pi-durable'].includes(v.runtime.engine) &&
|
|
16667
|
+
typeof v.runtime.provider === 'string' &&
|
|
16668
|
+
v.runtime.provider.length <= 100 &&
|
|
16669
|
+
typeof v.runtime.model === 'string' &&
|
|
16670
|
+
v.runtime.model.length <= 200 &&
|
|
16671
|
+
Number.isFinite(v.runtime.durationMs) &&
|
|
16672
|
+
v.runtime.durationMs >= 0 &&
|
|
16673
|
+
Number.isSafeInteger(v.runtime.inputTokens) &&
|
|
16674
|
+
v.runtime.inputTokens >= 0 &&
|
|
16675
|
+
Number.isSafeInteger(v.runtime.outputTokens) &&
|
|
16676
|
+
v.runtime.outputTokens >= 0)) &&
|
|
16677
|
+
(v.receipt === undefined ||
|
|
16678
|
+
(typeof v.receipt === 'object' &&
|
|
16679
|
+
v.receipt !== null &&
|
|
16680
|
+
typeof v.receipt.id === 'string' &&
|
|
16681
|
+
v.receipt.id.length <= 256 &&
|
|
16682
|
+
typeof v.receipt.action === 'string' &&
|
|
16683
|
+
v.receipt.action.length <= 5000 &&
|
|
16684
|
+
v.receipt.status === 'completed' &&
|
|
16685
|
+
(v.receipt.goalId === undefined || (typeof v.receipt.goalId === 'string' && v.receipt.goalId.length <= 256)) &&
|
|
16686
|
+
(v.receipt.goalSource === undefined || typeof v.receipt.goalSource === 'string') &&
|
|
16687
|
+
(v.receipt.goalKind === undefined || ['project', 'theme'].includes(v.receipt.goalKind)) &&
|
|
16688
|
+
Number.isFinite(v.receipt.createdAt))) &&
|
|
16661
16689
|
(v.proposal === undefined ||
|
|
16662
16690
|
(typeof v.proposal === 'object' &&
|
|
16663
16691
|
v.proposal !== null &&
|
|
16664
16692
|
typeof v.proposal.id === 'string' &&
|
|
16665
|
-
typeof v.proposal.description === 'string'
|
|
16693
|
+
typeof v.proposal.description === 'string' &&
|
|
16694
|
+
['L2', 'L3'].includes(v.proposal.risk) &&
|
|
16695
|
+
Number.isFinite(v.proposal.expiresAt))));
|
|
16666
16696
|
}
|
|
16667
16697
|
//# sourceMappingURL=assistant.js.map
|
|
16668
16698
|
;// CONCATENATED MODULE: ../../packages/remosidian-protocol/dist/assistant-signals.js
|
|
@@ -16686,11 +16716,72 @@ function isAssistantSignals(value) {
|
|
|
16686
16716
|
v.notifications.every((x) => x &&
|
|
16687
16717
|
typeof x.id === 'string' &&
|
|
16688
16718
|
typeof x.goalId === 'string' &&
|
|
16689
|
-
['started', 'progress', 'decision', 'review', 'blocked', 'failure', 'completed', 'summary'].includes(x.kind) &&
|
|
16719
|
+
['started', 'progress', 'decision', 'review', 'blocked', 'failure', 'completed', 'summary', 'meeting'].includes(x.kind) &&
|
|
16690
16720
|
typeof x.title === 'string' &&
|
|
16691
16721
|
typeof x.body === 'string' &&
|
|
16692
16722
|
Number.isFinite(x.createdAt) &&
|
|
16693
|
-
typeof x.read === 'boolean'
|
|
16723
|
+
typeof x.read === 'boolean' &&
|
|
16724
|
+
['urgent', 'normal', 'low'].includes(x.priority) &&
|
|
16725
|
+
(x.proposalId === undefined || typeof x.proposalId === 'string')) &&
|
|
16726
|
+
Array.isArray(v.triage) &&
|
|
16727
|
+
v.triage.length <= 50 &&
|
|
16728
|
+
v.triage.every((x) => x &&
|
|
16729
|
+
typeof x.id === 'string' &&
|
|
16730
|
+
(x.goalId === null || typeof x.goalId === 'string') &&
|
|
16731
|
+
typeof x.source === 'string' &&
|
|
16732
|
+
['ignore', 'action', 'uncertain'].includes(x.kind) &&
|
|
16733
|
+
Number.isFinite(x.confidence) &&
|
|
16734
|
+
typeof x.summary === 'string' &&
|
|
16735
|
+
typeof x.reason === 'string' &&
|
|
16736
|
+
typeof x.model === 'string' &&
|
|
16737
|
+
['ignored', 'unassigned', 'pending', 'queued'].includes(x.state) &&
|
|
16738
|
+
(x.matchedBy === undefined || ['model', 'automatic'].includes(x.matchedBy)) &&
|
|
16739
|
+
(x.workflow === undefined || x.workflow === 'meeting-prep') &&
|
|
16740
|
+
Number.isFinite(x.createdAt)) &&
|
|
16741
|
+
[0, 1, 2, 3].includes(v.permissionLevel) &&
|
|
16742
|
+
Number.isFinite(v.shadowUntil) &&
|
|
16743
|
+
typeof v.shadowActive === 'boolean' &&
|
|
16744
|
+
typeof v.meetingPrepEnabled === 'boolean' &&
|
|
16745
|
+
Number.isSafeInteger(v.dailyPlanHour) &&
|
|
16746
|
+
v.dailyPlanHour >= 0 &&
|
|
16747
|
+
v.dailyPlanHour <= 23 &&
|
|
16748
|
+
Number.isSafeInteger(v.dailyReviewHour) &&
|
|
16749
|
+
v.dailyReviewHour >= 0 &&
|
|
16750
|
+
v.dailyReviewHour <= 23 &&
|
|
16751
|
+
Number.isSafeInteger(v.activeGoalLimit) &&
|
|
16752
|
+
v.activeGoalLimit >= 3 &&
|
|
16753
|
+
v.activeGoalLimit <= 5 &&
|
|
16754
|
+
Boolean(v.portfolio &&
|
|
16755
|
+
['active', 'review', 'blocked', 'stale'].every((key) => Number.isSafeInteger(v.portfolio[key]))) &&
|
|
16756
|
+
Array.isArray(v.approvals) &&
|
|
16757
|
+
v.approvals.length <= 20 &&
|
|
16758
|
+
v.approvals.every((x) => x &&
|
|
16759
|
+
typeof x.id === 'string' &&
|
|
16760
|
+
typeof x.description === 'string' &&
|
|
16761
|
+
['L2', 'L3'].includes(x.risk) &&
|
|
16762
|
+
typeof x.goalId === 'string' &&
|
|
16763
|
+
Number.isFinite(x.expiresAt)) &&
|
|
16764
|
+
Boolean(v.metrics &&
|
|
16765
|
+
v.metrics.period === 'today' &&
|
|
16766
|
+
Number.isSafeInteger(v.metrics.modelCalls) &&
|
|
16767
|
+
Number.isSafeInteger(v.metrics.inputTokens) &&
|
|
16768
|
+
Number.isSafeInteger(v.metrics.outputTokens) &&
|
|
16769
|
+
(v.metrics.estimatedCostUsd === null || Number.isFinite(v.metrics.estimatedCostUsd)) &&
|
|
16770
|
+
Number.isSafeInteger(v.metrics.completedRuns) &&
|
|
16771
|
+
Number.isSafeInteger(v.metrics.failedRuns) &&
|
|
16772
|
+
Number.isSafeInteger(v.metrics.recoveredErrors) &&
|
|
16773
|
+
Number.isSafeInteger(v.metrics.autoActions) &&
|
|
16774
|
+
Number.isSafeInteger(v.metrics.feedbackCount) &&
|
|
16775
|
+
Number.isSafeInteger(v.metrics.acceptedFeedback) &&
|
|
16776
|
+
Number.isSafeInteger(v.metrics.correctionCount) &&
|
|
16777
|
+
Number.isSafeInteger(v.metrics.ineffectiveCount) &&
|
|
16778
|
+
(v.metrics.suggestionAcceptanceRate === null || Number.isFinite(v.metrics.suggestionAcceptanceRate)) &&
|
|
16779
|
+
Number.isSafeInteger(v.metrics.notificationCount) &&
|
|
16780
|
+
Number.isSafeInteger(v.metrics.unreadNotificationCount) &&
|
|
16781
|
+
(v.metrics.notificationNoiseRate === null || Number.isFinite(v.metrics.notificationNoiseRate)) &&
|
|
16782
|
+
Array.isArray(v.metrics.goalProgress) &&
|
|
16783
|
+
v.metrics.goalProgress.length <= 5 &&
|
|
16784
|
+
v.metrics.goalProgress.every((item) => item && typeof item.goalId === 'string' && typeof item.title === 'string' && Number.isSafeInteger(item.runs))));
|
|
16694
16785
|
}
|
|
16695
16786
|
//# sourceMappingURL=assistant-signals.js.map
|
|
16696
16787
|
;// CONCATENATED MODULE: ../../packages/lifeos-query-contracts/dist/viewModes.js
|
|
@@ -16890,7 +16981,17 @@ const vaultId = { vaultId: isId };
|
|
|
16890
16981
|
const pathField = { path: isPath };
|
|
16891
16982
|
const schemas = {
|
|
16892
16983
|
'assistant.signals': { required: { ...id, ...vaultId, customerId: isId } },
|
|
16893
|
-
'assistant.inbox.configure': {
|
|
16984
|
+
'assistant.inbox.configure': {
|
|
16985
|
+
required: { ...id, ...vaultId, customerId: isId, enabled: request_validation_isBoolean },
|
|
16986
|
+
optional: {
|
|
16987
|
+
permissionLevel: oneOf(0, 1, 2, 3),
|
|
16988
|
+
dailyPlanHour: (value) => Number.isSafeInteger(value) && Number(value) >= 0 && Number(value) <= 23,
|
|
16989
|
+
dailyReviewHour: (value) => Number.isSafeInteger(value) && Number(value) >= 0 && Number(value) <= 23,
|
|
16990
|
+
activeGoalLimit: oneOf(3, 4, 5),
|
|
16991
|
+
shadowHours: oneOf(0, 48),
|
|
16992
|
+
meetingPrepEnabled: request_validation_isBoolean,
|
|
16993
|
+
},
|
|
16994
|
+
},
|
|
16894
16995
|
'assistant.inbox.receive': {
|
|
16895
16996
|
required: {
|
|
16896
16997
|
...id,
|
|
@@ -16903,6 +17004,16 @@ const schemas = {
|
|
|
16903
17004
|
},
|
|
16904
17005
|
},
|
|
16905
17006
|
'assistant.notice.read': { required: { ...id, ...vaultId, customerId: isId, noticeId: isId } },
|
|
17007
|
+
'assistant.feedback': {
|
|
17008
|
+
required: {
|
|
17009
|
+
...id,
|
|
17010
|
+
...vaultId,
|
|
17011
|
+
customerId: isId,
|
|
17012
|
+
targetType: oneOf('notice', 'proposal'),
|
|
17013
|
+
targetId: isId,
|
|
17014
|
+
action: oneOf('accepted', 'rejected', 'later', 'mute'),
|
|
17015
|
+
},
|
|
17016
|
+
},
|
|
16906
17017
|
'assistant.push.register': {
|
|
16907
17018
|
required: { ...id, ...vaultId, customerId: isId, deviceId: isId, token: boundedString(256), enabled: request_validation_isBoolean },
|
|
16908
17019
|
},
|
|
@@ -17041,6 +17152,7 @@ const responseValidators = {
|
|
|
17041
17152
|
duplicate: response_validation_isBoolean,
|
|
17042
17153
|
}),
|
|
17043
17154
|
'assistant.notice.read': isAssistantSignals,
|
|
17155
|
+
'assistant.feedback': isAssistantSignals,
|
|
17044
17156
|
'assistant.push.register': objectWith({ enabled: response_validation_isBoolean }),
|
|
17045
17157
|
'assistant.configure': isAssistantStatus,
|
|
17046
17158
|
'assistant.chat': isAssistantReply,
|
|
@@ -19059,10 +19171,22 @@ class AssistantPush {
|
|
|
19059
19171
|
!feed.notifications.every((n) => typeof n.id === 'string' &&
|
|
19060
19172
|
Number.isSafeInteger(n.sequence) &&
|
|
19061
19173
|
n.sequence > device.cursor &&
|
|
19062
|
-
[
|
|
19174
|
+
[
|
|
19175
|
+
'started',
|
|
19176
|
+
'progress',
|
|
19177
|
+
'decision',
|
|
19178
|
+
'review',
|
|
19179
|
+
'blocked',
|
|
19180
|
+
'failure',
|
|
19181
|
+
'completed',
|
|
19182
|
+
'summary',
|
|
19183
|
+
'meeting',
|
|
19184
|
+
].includes(n.kind) &&
|
|
19063
19185
|
typeof n.title === 'string' &&
|
|
19064
19186
|
typeof n.body === 'string' &&
|
|
19065
|
-
typeof n.read === 'boolean'
|
|
19187
|
+
typeof n.read === 'boolean' &&
|
|
19188
|
+
['urgent', 'normal', 'low'].includes(n.priority) &&
|
|
19189
|
+
(n.proposalId === undefined || typeof n.proposalId === 'string')))
|
|
19066
19190
|
throw Error('Invalid notice feed');
|
|
19067
19191
|
for (const notice of feed.notifications) {
|
|
19068
19192
|
if (!notice.read)
|
|
@@ -19073,6 +19197,8 @@ class AssistantPush {
|
|
|
19073
19197
|
state: 'queued',
|
|
19074
19198
|
attempts: 0,
|
|
19075
19199
|
nextAt: this.now(),
|
|
19200
|
+
priority: notice.priority,
|
|
19201
|
+
...(notice.proposalId ? { proposalId: notice.proposalId } : {}),
|
|
19076
19202
|
});
|
|
19077
19203
|
device.cursor = Math.max(device.cursor, notice.sequence);
|
|
19078
19204
|
}
|
|
@@ -19121,11 +19247,14 @@ class AssistantPush {
|
|
|
19121
19247
|
body: '打开置顶会话查看详情。',
|
|
19122
19248
|
sound: 'default',
|
|
19123
19249
|
channelId: 'personal-assistant',
|
|
19250
|
+
categoryId: ticket.proposalId ? 'personal-agent-approval' : 'personal-agent-update',
|
|
19251
|
+
priority: ticket.priority === 'urgent' ? 'high' : ticket.priority === 'low' ? 'normal' : 'default',
|
|
19124
19252
|
data: {
|
|
19125
19253
|
type: 'personal-assistant',
|
|
19126
19254
|
daemonId: this.options.daemonId,
|
|
19127
19255
|
vaultId: device.vaultId,
|
|
19128
19256
|
noticeId: ticket.noticeId,
|
|
19257
|
+
...(ticket.proposalId ? { proposalId: ticket.proposalId } : {}),
|
|
19129
19258
|
},
|
|
19130
19259
|
ttl: 3600,
|
|
19131
19260
|
});
|
|
@@ -30985,16 +31114,29 @@ class RemosidianAssistant {
|
|
|
30985
31114
|
throw new VaultRequestError('请先在设置中开启 Personal Agent。', 'forbidden');
|
|
30986
31115
|
if (req.op === 'assistant.signals' ||
|
|
30987
31116
|
req.op === 'assistant.inbox.configure' ||
|
|
30988
|
-
req.op === 'assistant.notice.read'
|
|
31117
|
+
req.op === 'assistant.notice.read' ||
|
|
31118
|
+
req.op === 'assistant.feedback') {
|
|
30989
31119
|
const result = await this.call(vault.root, req.op === 'assistant.signals'
|
|
30990
31120
|
? '/api/signals'
|
|
30991
31121
|
: req.op === 'assistant.notice.read'
|
|
30992
31122
|
? '/api/signals/read'
|
|
30993
|
-
:
|
|
31123
|
+
: req.op === 'assistant.feedback'
|
|
31124
|
+
? '/api/signals/feedback'
|
|
31125
|
+
: '/api/signals/configure', signal, req.op === 'assistant.signals'
|
|
30994
31126
|
? undefined
|
|
30995
31127
|
: req.op === 'assistant.notice.read'
|
|
30996
31128
|
? { noticeId: req.noticeId }
|
|
30997
|
-
:
|
|
31129
|
+
: req.op === 'assistant.feedback'
|
|
31130
|
+
? { targetType: req.targetType, targetId: req.targetId, action: req.action }
|
|
31131
|
+
: {
|
|
31132
|
+
enabled: req.enabled,
|
|
31133
|
+
permissionLevel: req.permissionLevel,
|
|
31134
|
+
dailyPlanHour: req.dailyPlanHour,
|
|
31135
|
+
dailyReviewHour: req.dailyReviewHour,
|
|
31136
|
+
activeGoalLimit: req.activeGoalLimit,
|
|
31137
|
+
shadowHours: req.shadowHours,
|
|
31138
|
+
meetingPrepEnabled: req.meetingPrepEnabled,
|
|
31139
|
+
});
|
|
30998
31140
|
if (!isAssistantSignals(result))
|
|
30999
31141
|
throw Error('收件箱响应格式无效。');
|
|
31000
31142
|
return result;
|
|
@@ -31050,6 +31192,8 @@ class RemosidianAssistant {
|
|
|
31050
31192
|
.map((goal) => ({
|
|
31051
31193
|
id: goal.id,
|
|
31052
31194
|
title: goal.title.slice(0, 160),
|
|
31195
|
+
source: goal.source.slice(0, 1000),
|
|
31196
|
+
kind: goal.kind,
|
|
31053
31197
|
status: goal.status,
|
|
31054
31198
|
priority: goal.priority,
|
|
31055
31199
|
summary: goal.summary.slice(0, 500),
|
|
@@ -33838,7 +33982,7 @@ function runFileBackedPluginTurn(input, prompt, options, onDelta) {
|
|
|
33838
33982
|
}
|
|
33839
33983
|
//# sourceMappingURL=chat-plugin-runtime.js.map
|
|
33840
33984
|
;// CONCATENATED MODULE: ../../packages/remosidian-server/dist/version.js
|
|
33841
|
-
const VERSION = '0.1.
|
|
33985
|
+
const VERSION = '0.1.14';
|
|
33842
33986
|
//# sourceMappingURL=version.js.map
|
|
33843
33987
|
;// CONCATENATED MODULE: ../../packages/remosidian-server/dist/chat-runtime.js
|
|
33844
33988
|
|
|
@@ -34754,6 +34898,7 @@ async function handleRemosidianRequest(req, vaultService, chatService, conversat
|
|
|
34754
34898
|
case 'assistant.inbox.configure':
|
|
34755
34899
|
case 'assistant.inbox.receive':
|
|
34756
34900
|
case 'assistant.notice.read':
|
|
34901
|
+
case 'assistant.feedback':
|
|
34757
34902
|
case 'assistant.push.register':
|
|
34758
34903
|
if (!context.assistant)
|
|
34759
34904
|
return invalidResponse(req.id, '此服务器尚未支持 Personal Agent,请更新电脑端。');
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|