shennian 0.2.54 → 0.2.56

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.
@@ -7,6 +7,7 @@ import { getRegisteredAgents, unregisterAgent } from '../agents/adapter.js';
7
7
  import { loadConfig } from '../config/index.js';
8
8
  import { handleUpgradeStart, handleUpgradeStatus } from '../commands/upgrade.js';
9
9
  import { handleAgentsRefresh, handleModelsRefresh } from './handlers/agents.js';
10
+ import { handleAgentConfigClear, handleAgentConfigGet, handleAgentConfigTest, handleAgentConfigUpsert, } from './handlers/agent-config.js';
10
11
  import { handleChatAbort, handleChatSend } from './handlers/chat.js';
11
12
  import { cleanupPendingTransfers, handleFsLs, handleFsRead, handleFsTransfer, handleFsTransferAbort, handleFsTransferChunk, handleFsTransferFinish, handleFsTransferStart, } from './handlers/fs.js';
12
13
  import { handleRegionProbe, handleRegionSwitch, handleUpgradeSetPolicy } from './handlers/control.js';
@@ -171,6 +172,18 @@ export class SessionManager {
171
172
  case 'models.refresh':
172
173
  await handleModelsRefresh(runtime, req);
173
174
  break;
175
+ case 'agent.config.get':
176
+ await handleAgentConfigGet(runtime, req);
177
+ break;
178
+ case 'agent.config.upsert':
179
+ await handleAgentConfigUpsert(runtime, req);
180
+ break;
181
+ case 'agent.config.clear':
182
+ await handleAgentConfigClear(runtime, req);
183
+ break;
184
+ case 'agent.config.test':
185
+ await handleAgentConfigTest(runtime, req);
186
+ break;
174
187
  case 'manager.channel.get':
175
188
  case 'manager.channel.upsert':
176
189
  await runtime.managerRuntime?.handleAppReq(req);
@@ -11,6 +11,9 @@ function emptyQueue() {
11
11
  function nowIso() {
12
12
  return new Date().toISOString();
13
13
  }
14
+ function forwardedReqId(reqId) {
15
+ return `enqueue-send-${reqId}-${randomUUID()}`;
16
+ }
14
17
  function readQueue() {
15
18
  try {
16
19
  const parsed = JSON.parse(fs.readFileSync(QUEUE_FILE, 'utf-8'));
@@ -38,6 +41,7 @@ function normalizeAttachments(value) {
38
41
  path: typeof entry.path === 'string' ? entry.path : '',
39
42
  name: typeof entry.name === 'string' ? entry.name : '',
40
43
  mimeType: typeof entry.mimeType === 'string' ? entry.mimeType : '',
44
+ ...(typeof entry.previewData === 'string' && entry.previewData.trim() ? { previewData: entry.previewData.trim() } : {}),
41
45
  };
42
46
  return attachment.path && attachment.name && attachment.mimeType ? attachment : null;
43
47
  })
@@ -94,9 +98,11 @@ export class ChatQueueManager {
94
98
  if (!isBusy && !(readQueue().sessions[params.sessionId]?.length)) {
95
99
  await this.opts.dispatchReq({
96
100
  ...req,
101
+ id: forwardedReqId(req.id),
97
102
  method: 'chat.send',
98
103
  params: {
99
104
  ...params,
105
+ responseId: req.id,
100
106
  clientMessageId: params.clientMessageId ?? params.queueMessageId,
101
107
  waitForDispatch: true,
102
108
  },
@@ -263,6 +269,7 @@ export class ChatQueueManager {
263
269
  clientMessageId: message.clientMessageId ?? message.id,
264
270
  attachments: message.attachments,
265
271
  externalChannel: message.externalChannel,
272
+ waitForDispatch: true,
266
273
  },
267
274
  });
268
275
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shennian",
3
- "version": "0.2.54",
3
+ "version": "0.2.56",
4
4
  "description": "Shennian — AI Agent Control Plane CLI",
5
5
  "type": "module",
6
6
  "bin": {