@m6d/cortex-server 1.8.0 → 2.0.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/README.md +8 -3
- package/contracts/README.md +23 -0
- package/contracts/graph/embed.ts +50 -0
- package/{src/lib → contracts}/graph/helpers.ts +4 -10
- package/{src/lib → contracts}/graph/neo4j.ts +14 -27
- package/contracts/graph/schema.ts +65 -0
- package/{src/lib → contracts}/graph/types.ts +2 -29
- package/contracts/graph.ts +36 -0
- package/contracts/runtime.ts +208 -0
- package/contracts/wire.ts +143 -0
- package/dist/contracts/graph/embed.d.ts +22 -0
- package/dist/{src/lib → contracts}/graph/helpers.d.ts +16 -14
- package/dist/{src/lib → contracts}/graph/neo4j.d.ts +5 -5
- package/dist/contracts/graph/schema.d.ts +62 -0
- package/dist/{src/lib → contracts}/graph/types.d.ts +1 -1
- package/dist/contracts/graph.d.ts +14 -0
- package/dist/contracts/runtime.d.ts +278 -0
- package/dist/contracts/wire.d.ts +120 -0
- package/dist/src/lib/adapters/database/index.d.ts +61 -0
- package/dist/src/lib/adapters/database/message-content.d.ts +30 -0
- package/dist/src/lib/adapters/database/mssql/attachments.d.ts +100 -0
- package/dist/src/lib/adapters/database/mssql/client.d.ts +8 -0
- package/dist/src/lib/adapters/database/mssql/index.d.ts +194 -0
- package/dist/src/lib/adapters/database/mssql/llm-requests.d.ts +17 -0
- package/dist/src/lib/adapters/database/mssql/messages.d.ts +37 -0
- package/dist/src/lib/adapters/database/mssql/threads.d.ts +50 -0
- package/dist/src/lib/adapters/database/postgres/attachments.d.ts +113 -0
- package/dist/src/lib/adapters/database/postgres/client.d.ts +8 -0
- package/dist/src/lib/adapters/database/postgres/index.d.ts +207 -0
- package/dist/src/lib/adapters/database/postgres/llm-requests.d.ts +17 -0
- package/dist/src/lib/adapters/database/postgres/messages.d.ts +37 -0
- package/dist/src/lib/adapters/database/postgres/threads.d.ts +50 -0
- package/{src/lib/adapters/storage.ts → dist/src/lib/adapters/storage/index.d.ts} +1 -1
- package/dist/src/lib/adapters/{minio.d.ts → storage/minio.d.ts} +1 -1
- package/dist/src/lib/ai/active-runs.d.ts +63 -0
- package/dist/src/lib/ai/attachments.d.ts +30 -0
- package/dist/src/lib/ai/backend-url.d.ts +16 -0
- package/dist/src/lib/ai/cc-runtime.d.ts +61 -0
- package/dist/src/lib/ai/commit-gate.d.ts +21 -0
- package/dist/src/lib/ai/context/builder.d.ts +6 -7
- package/dist/src/lib/ai/context/compression-middleware.d.ts +15 -0
- package/dist/src/lib/ai/context/compressor.d.ts +2 -13
- package/dist/src/lib/ai/context/intra-turn-compressor.d.ts +9 -9
- package/dist/src/lib/ai/context/optimize-thread-context.d.ts +9 -0
- package/dist/src/lib/ai/context/summarizer.d.ts +3 -3
- package/dist/src/lib/ai/context/token-estimator.d.ts +5 -8
- package/dist/src/lib/ai/fetch.d.ts +1 -1
- package/dist/src/lib/ai/finish-turn.d.ts +23 -0
- package/dist/src/lib/ai/helpers.d.ts +37 -4
- package/dist/src/lib/ai/index.d.ts +6 -3
- package/dist/src/lib/ai/inspector.d.ts +41 -0
- package/dist/src/lib/ai/interceptors/request-interceptor.d.ts +6 -5
- package/dist/src/lib/ai/prompt.d.ts +5 -4
- package/dist/src/lib/ai/redis-runs.d.ts +41 -0
- package/dist/src/lib/ai/redis-stream-log.d.ts +39 -0
- package/dist/src/lib/ai/tools/execute-code.tool.d.ts +18 -4
- package/dist/src/lib/ai/tools/query-graph.tool.d.ts +13 -5
- package/dist/src/lib/ai/tools/read-attachment.tool.d.ts +21 -0
- package/dist/src/lib/ai/tools/search-common.d.ts +17 -0
- package/dist/src/lib/ai/tools/search-knowledge.tool.d.ts +15 -0
- package/dist/src/lib/ai/tools/search-services.tool.d.ts +12 -0
- package/dist/src/lib/ai/tools/search-tools.tool.d.ts +12 -0
- package/dist/src/lib/ai/turn-tools.d.ts +39 -0
- package/dist/src/lib/ai/vision/rasterize-pdf.d.ts +26 -0
- package/dist/src/lib/ai/vision/rasterize-pdf.worker.d.ts +1 -0
- package/dist/src/lib/ai/vision/vision-reader.d.ts +45 -0
- package/dist/src/lib/cc/client.d.ts +183 -0
- package/dist/src/lib/cc/config-cache.d.ts +20 -0
- package/dist/src/lib/cc/format.d.ts +23 -0
- package/dist/src/lib/cc/registry.d.ts +34 -0
- package/dist/src/lib/cc/types.d.ts +27 -0
- package/dist/src/lib/config.d.ts +81 -64
- package/dist/src/lib/db/drizzle.config.mssql.d.ts +2 -0
- package/dist/src/lib/db/drizzle.config.pg.d.ts +2 -0
- package/dist/src/lib/db/migrate.d.ts +7 -1
- package/dist/src/lib/db/{schema.d.ts → schema.mssql.d.ts} +138 -29
- package/dist/src/lib/db/schema.pg.d.ts +546 -0
- package/dist/src/lib/factory.d.ts +2 -12
- package/dist/src/lib/graph/index.d.ts +10 -11
- package/dist/src/lib/graph/resolver.d.ts +2 -3
- package/dist/src/lib/index.d.ts +3 -3
- package/dist/src/lib/redis.d.ts +19 -0
- package/dist/src/lib/routes/chat.d.ts +1 -1
- package/dist/src/lib/routes/files.d.ts +1 -1
- package/dist/src/lib/routes/owned-thread.d.ts +17 -0
- package/dist/src/lib/routes/threads.d.ts +1 -1
- package/dist/src/lib/routes/ws.d.ts +1 -1
- package/dist/src/lib/types.d.ts +20 -37
- package/dist/src/lib/ws/connections.d.ts +2 -1
- package/package.json +33 -18
- package/src/lib/adapters/database/index.ts +78 -0
- package/src/lib/adapters/database/message-content.ts +39 -0
- package/src/lib/adapters/database/mssql/attachments.ts +90 -0
- package/src/lib/adapters/database/mssql/client.ts +11 -0
- package/src/lib/adapters/database/mssql/index.ts +23 -0
- package/src/lib/adapters/database/mssql/llm-requests.ts +43 -0
- package/src/lib/adapters/database/mssql/messages.ts +92 -0
- package/src/lib/adapters/database/mssql/threads.ts +83 -0
- package/src/lib/adapters/database/postgres/attachments.ts +88 -0
- package/src/lib/adapters/database/postgres/client.ts +11 -0
- package/src/lib/adapters/database/postgres/index.ts +23 -0
- package/src/lib/adapters/database/postgres/llm-requests.ts +45 -0
- package/src/lib/adapters/database/postgres/messages.ts +92 -0
- package/src/lib/adapters/database/postgres/threads.ts +84 -0
- package/{dist/src/lib/adapters/storage.d.ts → src/lib/adapters/storage/index.ts} +1 -1
- package/src/lib/adapters/{minio.ts → storage/minio.ts} +5 -5
- package/src/lib/ai/active-runs.ts +157 -0
- package/src/lib/ai/attachments.ts +144 -0
- package/src/lib/ai/backend-url.ts +27 -0
- package/src/lib/ai/cc-runtime.ts +63 -0
- package/src/lib/ai/commit-gate.ts +116 -0
- package/src/lib/ai/context/builder.ts +12 -14
- package/src/lib/ai/context/compression-middleware.ts +44 -0
- package/src/lib/ai/context/compressor.ts +67 -59
- package/src/lib/ai/context/intra-turn-compressor.ts +121 -204
- package/src/lib/ai/context/optimize-thread-context.ts +50 -0
- package/src/lib/ai/context/summarizer.ts +28 -30
- package/src/lib/ai/context/token-estimator.ts +35 -30
- package/src/lib/ai/fetch.ts +10 -5
- package/src/lib/ai/finish-turn.ts +75 -0
- package/src/lib/ai/helpers.ts +83 -15
- package/src/lib/ai/index.ts +359 -329
- package/src/lib/ai/inspector.ts +112 -0
- package/src/lib/ai/interceptors/request-interceptor.ts +70 -42
- package/src/lib/ai/prompt.ts +126 -125
- package/src/lib/ai/redis-runs.ts +167 -0
- package/src/lib/ai/redis-stream-log.ts +219 -0
- package/src/lib/ai/tools/execute-code.tool.ts +178 -67
- package/src/lib/ai/tools/query-graph.tool.ts +7 -8
- package/src/lib/ai/tools/read-attachment.tool.ts +59 -0
- package/src/lib/ai/tools/search-common.ts +15 -0
- package/src/lib/ai/tools/search-knowledge.tool.ts +33 -0
- package/src/lib/ai/tools/search-services.tool.ts +31 -0
- package/src/lib/ai/tools/search-tools.tool.ts +29 -0
- package/src/lib/ai/turn-tools.ts +154 -0
- package/src/lib/ai/vision/rasterize-pdf.ts +69 -0
- package/src/lib/ai/vision/rasterize-pdf.worker.ts +81 -0
- package/src/lib/ai/vision/vision-reader.ts +130 -0
- package/src/lib/auth/middleware.ts +5 -3
- package/src/lib/cc/client.ts +273 -0
- package/src/lib/cc/config-cache.ts +32 -0
- package/src/lib/cc/format.ts +96 -0
- package/src/lib/cc/registry.ts +62 -0
- package/src/lib/cc/types.ts +44 -0
- package/src/lib/config.ts +102 -71
- package/src/lib/db/drizzle.config.mssql.ts +9 -0
- package/src/lib/db/drizzle.config.pg.ts +9 -0
- package/src/lib/db/migrate.ts +45 -10
- package/src/lib/db/migrations/mssql/20260729092726_talented_wilson_fisk/migration.sql +20 -0
- package/src/lib/db/migrations/mssql/20260729092726_talented_wilson_fisk/snapshot.json +497 -0
- package/src/lib/db/migrations/mssql/20260801003652_perpetual_blue_shield/migration.sql +1 -0
- package/src/lib/db/migrations/mssql/20260801003652_perpetual_blue_shield/snapshot.json +516 -0
- package/src/lib/db/migrations/mssql/20260812174642_user_id_text/migration.sql +2 -0
- package/src/lib/db/migrations/mssql/20260812174642_user_id_text/snapshot.json +516 -0
- package/src/lib/db/migrations/pg/20260801084117_thick_ben_grimm/migration.sql +53 -0
- package/src/lib/db/migrations/pg/20260801084117_thick_ben_grimm/snapshot.json +584 -0
- package/src/lib/db/migrations/pg/20260812174622_user_id_text/migration.sql +2 -0
- package/src/lib/db/migrations/pg/20260812174622_user_id_text/snapshot.json +584 -0
- package/src/lib/db/{schema.ts → schema.mssql.ts} +29 -18
- package/src/lib/db/schema.pg.ts +95 -0
- package/src/lib/factory.ts +44 -89
- package/src/lib/graph/index.ts +12 -40
- package/src/lib/graph/resolver.ts +146 -116
- package/src/lib/index.ts +11 -4
- package/src/lib/redis.ts +44 -0
- package/src/lib/routes/chat.ts +91 -62
- package/src/lib/routes/files.ts +105 -83
- package/src/lib/routes/owned-thread.ts +17 -0
- package/src/lib/routes/threads.ts +14 -30
- package/src/lib/routes/ws.ts +9 -3
- package/src/lib/types.ts +37 -36
- package/src/lib/ws/connections.ts +9 -1
- package/tsconfig.json +48 -0
- package/dist/src/lib/adapters/database.d.ts +0 -45
- package/dist/src/lib/adapters/mssql.d.ts +0 -3
- package/dist/src/lib/ai/active-streams.d.ts +0 -14
- package/dist/src/lib/ai/context/index.d.ts +0 -16
- package/dist/src/lib/ai/tools/capture-files.tool.d.ts +0 -6
- package/dist/src/lib/cli/extract-endpoints.d.ts +0 -6
- package/dist/src/lib/graph/expand-domains.d.ts +0 -2
- package/dist/src/lib/graph/generate-cypher.d.ts +0 -22
- package/dist/src/lib/graph/seed.d.ts +0 -19
- package/dist/src/lib/graph/validate.d.ts +0 -2
- package/dist/src/lib/routes/index.d.ts +0 -4
- package/dist/src/lib/ws/events.d.ts +0 -39
- package/dist/src/lib/ws/index.d.ts +0 -3
- package/dist/src/lib/ws/notify.d.ts +0 -2
- package/src/lib/adapters/database.ts +0 -48
- package/src/lib/adapters/mssql.ts +0 -231
- package/src/lib/ai/active-streams.ts +0 -123
- package/src/lib/ai/context/index.ts +0 -80
- package/src/lib/ai/tools/capture-files.tool.ts +0 -20
- package/src/lib/cli/extract-endpoints.ts +0 -550
- package/src/lib/graph/expand-domains.ts +0 -276
- package/src/lib/graph/generate-cypher.ts +0 -192
- package/src/lib/graph/seed.ts +0 -162
- package/src/lib/graph/validate.ts +0 -78
- package/src/lib/routes/index.ts +0 -4
- package/src/lib/ws/events.ts +0 -39
- package/src/lib/ws/index.ts +0 -11
- package/src/lib/ws/notify.ts +0 -9
- package/src/sample/db/client.ts +0 -9
- package/src/sample/db/migrations/20260411023125_rich_purple_man/migration.sql +0 -5
- package/src/sample/db/migrations/20260411023125_rich_purple_man/snapshot.json +0 -50
- package/src/sample/db/schema.ts +0 -10
- package/src/sample/domains/account/concepts/session.concept.ts +0 -17
- package/src/sample/domains/account/endpoints/listCurrentSessions.endpoint.ts +0 -31
- package/src/sample/domains/account/endpoints/revokeAllOtherSessions.endpoint.ts +0 -22
- package/src/sample/domains/account/endpoints/revokeCurrentSession.endpoint.ts +0 -33
- package/src/sample/domains/account/index.ts +0 -18
- package/src/sample/domains/appraisals/concepts/appraisalCycle.concept.ts +0 -15
- package/src/sample/domains/appraisals/concepts/appraisalRecord.concept.ts +0 -20
- package/src/sample/domains/appraisals/concepts/appraisalRecordCompetency.concept.ts +0 -10
- package/src/sample/domains/appraisals/concepts/appraisalRecordFunctionalRequirement.concept.ts +0 -10
- package/src/sample/domains/appraisals/concepts/appraisalRecordGoal.concept.ts +0 -17
- package/src/sample/domains/appraisals/endpoints/getAppraisalRecordById.endpoint.ts +0 -321
- package/src/sample/domains/appraisals/endpoints/getAppraisalRecordCompetencies.endpoint.ts +0 -120
- package/src/sample/domains/appraisals/endpoints/getAppraisalRecordFunctionalRequirements.endpoint.ts +0 -126
- package/src/sample/domains/appraisals/endpoints/getAppraisalRecordGoals.endpoint.ts +0 -104
- package/src/sample/domains/appraisals/endpoints/getAppraisalRecordScore.endpoint.ts +0 -58
- package/src/sample/domains/appraisals/endpoints/listAppraisalCyclesSimple.endpoint.ts +0 -52
- package/src/sample/domains/appraisals/endpoints/listAppraisalRecords.endpoint.ts +0 -245
- package/src/sample/domains/appraisals/endpoints/listAppraisalTemplatesSimple.endpoint.ts +0 -52
- package/src/sample/domains/appraisals/index.ts +0 -40
- package/src/sample/domains/appraisals/rules/appraisalRecordScoping.rule.ts +0 -7
- package/src/sample/domains/attendance/concepts/attendancePermission.concept.ts +0 -17
- package/src/sample/domains/attendance/concepts/attendanceTransaction.concept.ts +0 -17
- package/src/sample/domains/attendance/concepts/publicHoliday.concept.ts +0 -10
- package/src/sample/domains/attendance/concepts/punch.concept.ts +0 -19
- package/src/sample/domains/attendance/endpoints/getAttendanceTransactionById.endpoint.ts +0 -444
- package/src/sample/domains/attendance/endpoints/getCurrentAttendanceProfile.endpoint.ts +0 -886
- package/src/sample/domains/attendance/endpoints/getCurrentAttendanceStatistics.endpoint.ts +0 -49
- package/src/sample/domains/attendance/endpoints/listAttendancePermissions.endpoint.ts +0 -176
- package/src/sample/domains/attendance/endpoints/listAttendanceTransactionStates.endpoint.ts +0 -26
- package/src/sample/domains/attendance/endpoints/listAttendanceTransactions.endpoint.ts +0 -373
- package/src/sample/domains/attendance/endpoints/listPublicHolidaysSimple.endpoint.ts +0 -52
- package/src/sample/domains/attendance/endpoints/listPunchTypes.endpoint.ts +0 -25
- package/src/sample/domains/attendance/endpoints/listPunches.endpoint.ts +0 -178
- package/src/sample/domains/attendance/index.ts +0 -41
- package/src/sample/domains/attendance/services/attendancePermissions.service.ts +0 -15
- package/src/sample/domains/employees/concepts/employee.concept.ts +0 -20
- package/src/sample/domains/employees/concepts/employeeBankAccount.concept.ts +0 -19
- package/src/sample/domains/employees/concepts/employeeChild.concept.ts +0 -19
- package/src/sample/domains/employees/concepts/employeeDocument.concept.ts +0 -21
- package/src/sample/domains/employees/concepts/employeeEvent.concept.ts +0 -21
- package/src/sample/domains/employees/concepts/employeeExperience.concept.ts +0 -18
- package/src/sample/domains/employees/concepts/employeeJobLevelChange.concept.ts +0 -21
- package/src/sample/domains/employees/concepts/employeeMedal.concept.ts +0 -20
- package/src/sample/domains/employees/concepts/employeeQualification.concept.ts +0 -20
- package/src/sample/domains/employees/concepts/employeeSpouse.concept.ts +0 -21
- package/src/sample/domains/employees/concepts/employeeViolation.concept.ts +0 -19
- package/src/sample/domains/employees/endpoints/getCurrentEmployee.endpoint.ts +0 -1651
- package/src/sample/domains/employees/endpoints/getCurrentIdentity.endpoint.ts +0 -197
- package/src/sample/domains/employees/endpoints/getCurrentManagers.endpoint.ts +0 -142
- package/src/sample/domains/employees/endpoints/getEmployeeById.endpoint.ts +0 -1659
- package/src/sample/domains/employees/endpoints/getEmployeeStatistics.endpoint.ts +0 -43
- package/src/sample/domains/employees/endpoints/listBankAccounts.endpoint.ts +0 -223
- package/src/sample/domains/employees/endpoints/listChildren.endpoint.ts +0 -211
- package/src/sample/domains/employees/endpoints/listDocuments.endpoint.ts +0 -222
- package/src/sample/domains/employees/endpoints/listEmployeesSimple.endpoint.ts +0 -156
- package/src/sample/domains/employees/endpoints/listEvents.endpoint.ts +0 -120
- package/src/sample/domains/employees/endpoints/listExperiences.endpoint.ts +0 -188
- package/src/sample/domains/employees/endpoints/listJobLevelChanges.endpoint.ts +0 -240
- package/src/sample/domains/employees/endpoints/listMedals.endpoint.ts +0 -266
- package/src/sample/domains/employees/endpoints/listQualifications.endpoint.ts +0 -265
- package/src/sample/domains/employees/endpoints/listSpouses.endpoint.ts +0 -278
- package/src/sample/domains/employees/endpoints/listViolations.endpoint.ts +0 -245
- package/src/sample/domains/employees/index.ts +0 -75
- package/src/sample/domains/employees/services/employees.service.ts +0 -181
- package/src/sample/domains/index.ts +0 -10
- package/src/sample/domains/leaves/concepts/leave.concept.ts +0 -21
- package/src/sample/domains/leaves/concepts/leaveBalance.concept.ts +0 -17
- package/src/sample/domains/leaves/concepts/leaveBalanceTransaction.concept.ts +0 -16
- package/src/sample/domains/leaves/concepts/leaveType.concept.ts +0 -13
- package/src/sample/domains/leaves/concepts/leaveTypes.concept.ts +0 -205
- package/src/sample/domains/leaves/endpoints/getBalance.endpoint.ts +0 -53
- package/src/sample/domains/leaves/endpoints/getLeaveById.endpoint.ts +0 -53
- package/src/sample/domains/leaves/endpoints/listBalanceTransactions.endpoint.ts +0 -196
- package/src/sample/domains/leaves/endpoints/listBalanceTypes.endpoint.ts +0 -26
- package/src/sample/domains/leaves/endpoints/listBalances.endpoint.ts +0 -201
- package/src/sample/domains/leaves/endpoints/listLeaveTypes.endpoint.ts +0 -28
- package/src/sample/domains/leaves/endpoints/listLeaves.endpoint.ts +0 -234
- package/src/sample/domains/leaves/index.ts +0 -38
- package/src/sample/domains/leaves/services/leaveRequests.service.ts +0 -232
- package/src/sample/domains/notifications/concepts/notification.concept.ts +0 -19
- package/src/sample/domains/notifications/endpoints/countMyNotifications.endpoint.ts +0 -21
- package/src/sample/domains/notifications/endpoints/getMyNotification.endpoint.ts +0 -57
- package/src/sample/domains/notifications/endpoints/listMyNotifications.endpoint.ts +0 -59
- package/src/sample/domains/notifications/endpoints/markMyNotificationAsRead.endpoint.ts +0 -32
- package/src/sample/domains/notifications/index.ts +0 -20
- package/src/sample/domains/payroll/concepts/payslip.concept.ts +0 -18
- package/src/sample/domains/payroll/concepts/salaryCertificate.concept.ts +0 -17
- package/src/sample/domains/payroll/concepts/salaryCertificateRequestingEntity.concept.ts +0 -8
- package/src/sample/domains/payroll/endpoints/getPayslipById.endpoint.ts +0 -238
- package/src/sample/domains/payroll/endpoints/listPayslips.endpoint.ts +0 -216
- package/src/sample/domains/payroll/endpoints/listSalaryCertificateLanguages.endpoint.ts +0 -25
- package/src/sample/domains/payroll/endpoints/listSalaryCertificateRequestingEntities.endpoint.ts +0 -62
- package/src/sample/domains/payroll/endpoints/listSalaryCertificateTypes.endpoint.ts +0 -24
- package/src/sample/domains/payroll/endpoints/listSalaryCertificates.endpoint.ts +0 -122
- package/src/sample/domains/payroll/endpoints/previewSalaryCertificate.endpoint.ts +0 -45
- package/src/sample/domains/payroll/index.ts +0 -32
- package/src/sample/domains/payroll/rules/payrollEmployeeContext.rule.ts +0 -7
- package/src/sample/domains/payroll/services/salaryCertificates.service.ts +0 -15
- package/src/sample/domains/servicing/concepts/service.concept.ts +0 -6
- package/src/sample/domains/servicing/concepts/serviceRequest.concept.ts +0 -12
- package/src/sample/domains/servicing/concepts/serviceRequestApproval.concept.ts +0 -9
- package/src/sample/domains/servicing/endpoints/cancelServiceRequest.endpoint.ts +0 -21
- package/src/sample/domains/servicing/endpoints/createServiceRequest.endpoint.ts +0 -511
- package/src/sample/domains/servicing/endpoints/getServiceRequest.endpoint.ts +0 -352
- package/src/sample/domains/servicing/endpoints/getServiceRequestFormItems.endpoint.ts +0 -219
- package/src/sample/domains/servicing/endpoints/getServiceRequestTransactionFormItems.endpoint.ts +0 -216
- package/src/sample/domains/servicing/endpoints/getServiceStates.endpoint.ts +0 -47
- package/src/sample/domains/servicing/endpoints/invokeServiceRequestAction.endpoint.ts +0 -139
- package/src/sample/domains/servicing/endpoints/listServiceRequests.endpoint.ts +0 -292
- package/src/sample/domains/servicing/endpoints/listServices.endpoint.ts +0 -108
- package/src/sample/domains/servicing/endpoints/updateServiceRequest.endpoint.ts +0 -355
- package/src/sample/domains/servicing/index.ts +0 -44
- package/src/sample/domains/servicing/rules/checkValidActions.rule.ts +0 -7
- package/src/sample/domains/servicing/rules/createServiceRequest.rule.ts +0 -7
- package/src/sample/domains/servicing/rules/filterServiceRequestsByState.rule.ts +0 -7
- package/src/sample/domains/servicing/rules/passingOptionFields.rule.ts +0 -7
- package/src/sample/domains/shared/rules/pagination.rule.ts +0 -7
- package/src/sample/domains/suggestions/concepts/suggestion.concept.ts +0 -19
- package/src/sample/domains/suggestions/concepts/suggestionCategory.concept.ts +0 -7
- package/src/sample/domains/suggestions/concepts/suggestionImpactLevel.concept.ts +0 -7
- package/src/sample/domains/suggestions/endpoints/createSuggestion.endpoint.ts +0 -705
- package/src/sample/domains/suggestions/endpoints/deleteSuggestion.endpoint.ts +0 -32
- package/src/sample/domains/suggestions/endpoints/getSuggestionById.endpoint.ts +0 -635
- package/src/sample/domains/suggestions/endpoints/listSuggestionCategories.endpoint.ts +0 -62
- package/src/sample/domains/suggestions/endpoints/listSuggestionImpactLevels.endpoint.ts +0 -62
- package/src/sample/domains/suggestions/endpoints/listSuggestionStates.endpoint.ts +0 -24
- package/src/sample/domains/suggestions/endpoints/listSuggestions.endpoint.ts +0 -132
- package/src/sample/domains/suggestions/endpoints/updateSuggestion.endpoint.ts +0 -690
- package/src/sample/domains/suggestions/endpoints/updateSuggestionState.endpoint.ts +0 -39
- package/src/sample/domains/suggestions/index.ts +0 -34
- package/src/sample/domains/suggestions/rules/suggestionScope.rule.ts +0 -7
- package/src/sample/domains/surveys/concepts/survey.concept.ts +0 -10
- package/src/sample/domains/surveys/concepts/surveyResponse.concept.ts +0 -14
- package/src/sample/domains/surveys/endpoints/getSurveyResponseById.endpoint.ts +0 -131
- package/src/sample/domains/surveys/endpoints/getTargetedSurvey.endpoint.ts +0 -129
- package/src/sample/domains/surveys/endpoints/listTargetedSurveys.endpoint.ts +0 -160
- package/src/sample/domains/surveys/endpoints/respondToSurvey.endpoint.ts +0 -144
- package/src/sample/domains/surveys/index.ts +0 -21
- package/src/sample/drizzle.config.ts +0 -11
- package/src/sample/index.bak.ts +0 -341
- package/src/sample/index.ts +0 -318
- package/src/sample/official-statements/defaults.ts +0 -57
- package/src/sample/official-statements/routes.ts +0 -137
- package/src/sample/official-statements/service.ts +0 -148
- package/src/sample/official-statements/types.ts +0 -23
- /package/src/lib/db/migrations/{20260326231647_nice_speedball → mssql/20260326231647_nice_speedball}/migration.sql +0 -0
- /package/src/lib/db/migrations/{20260326231647_nice_speedball → mssql/20260326231647_nice_speedball}/snapshot.json +0 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ResolvedCortexAgentConfig } from "../../config";
|
|
2
|
+
/**
|
|
3
|
+
* Keeps a single turn's tool results inside the context window as steps accumulate.
|
|
4
|
+
*
|
|
5
|
+
* `onConfig` runs before every model call in the agent loop. Truncating older results
|
|
6
|
+
* is free, so it always happens; summarizing costs an extra model call and only
|
|
7
|
+
* happens if truncation left us over the threshold. A failed summarization is logged
|
|
8
|
+
* and swallowed — degrading to the merely-truncated prompt beats failing the turn.
|
|
9
|
+
*/
|
|
10
|
+
export declare function createCompressionMiddleware(config: ResolvedCortexAgentConfig): {
|
|
11
|
+
name: string;
|
|
12
|
+
onConfig(_ctx: import("@tanstack/ai").ChatMiddlewareContext<unknown>, { messages }: import("@tanstack/ai").ChatMiddlewareConfig): Promise<{
|
|
13
|
+
messages: import("@tanstack/ai").ModelMessage<string | import("@tanstack/ai").ContentPart<unknown, unknown, unknown, unknown, unknown>[] | null>[];
|
|
14
|
+
}>;
|
|
15
|
+
};
|
|
@@ -1,18 +1,7 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { MessageMetadata } from "../../types.ts";
|
|
1
|
+
import type { ChatMessage } from "../../types";
|
|
3
2
|
/**
|
|
4
3
|
* Returns a new array of messages with large tool outputs truncated
|
|
5
4
|
* to `maxTokensPerResult`. Does not mutate the input messages.
|
|
6
5
|
*/
|
|
7
|
-
export declare function compressToolResults(messages:
|
|
8
|
-
/**
|
|
9
|
-
* Structurally compresses a value to fit within a character budget.
|
|
10
|
-
* Understands JSON arrays, error objects, and nested objects — preserving
|
|
11
|
-
* semantic meaning better than naive string truncation.
|
|
12
|
-
*/
|
|
13
|
-
export declare function smartStructuralCompress(value: unknown, charBudget: number): string;
|
|
14
|
-
/**
|
|
15
|
-
* Produces a short human-readable summary of a value's shape and key data.
|
|
16
|
-
* Used both for inline object-key placeholders and for tool result one-liners.
|
|
17
|
-
*/
|
|
6
|
+
export declare function compressToolResults(messages: ChatMessage[], maxTokensPerResult: number): ChatMessage[];
|
|
18
7
|
export declare function summarizeValue(val: unknown): string;
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { ContextConfig } from "./types
|
|
1
|
+
import type { ModelMessage } from "@tanstack/ai";
|
|
2
|
+
import type { ContextConfig } from "./types";
|
|
3
3
|
type SummarizationModelConfig = NonNullable<ContextConfig["summarizationModel"]>;
|
|
4
4
|
/**
|
|
5
5
|
* Compresses tool results from older steps in the prompt.
|
|
6
6
|
*
|
|
7
7
|
* On step N, tool results from steps 1..N-2 are aggressively compressed
|
|
8
|
-
* to short one-liners. Only the most recent
|
|
9
|
-
* Does not mutate the input — returns a new
|
|
8
|
+
* to short one-liners. Only the most recent step's results stay in full.
|
|
9
|
+
* Does not mutate the input — returns a new array.
|
|
10
10
|
*/
|
|
11
|
-
export declare function compressIntraTurnToolResults(
|
|
11
|
+
export declare function compressIntraTurnToolResults(messages: ModelMessage[], toolResultMaxTokens: number): ModelMessage<string | import("@tanstack/ai").ContentPart<unknown, unknown, unknown, unknown, unknown>[] | null>[];
|
|
12
12
|
/**
|
|
13
13
|
* Estimates the total token count of tool results in the prompt.
|
|
14
14
|
*/
|
|
15
|
-
export declare function estimateToolResultTokens(
|
|
15
|
+
export declare function estimateToolResultTokens(messages: ModelMessage[]): number;
|
|
16
16
|
/**
|
|
17
17
|
* When accumulated tool result tokens exceed the threshold, summarizes
|
|
18
18
|
* older step results using a lightweight LLM call.
|
|
19
19
|
*
|
|
20
|
-
* Replaces
|
|
21
|
-
* summary in the oldest tool message.
|
|
20
|
+
* Replaces every tool result before the last two steps with a single
|
|
21
|
+
* synthetic summary in the oldest tool message.
|
|
22
22
|
*/
|
|
23
|
-
export declare function summarizeOldStepResults(
|
|
23
|
+
export declare function summarizeOldStepResults(messages: ModelMessage[], thresholdTokens: number, modelConfig: SummarizationModelConfig): Promise<ModelMessage<string | import("@tanstack/ai").ContentPart<unknown, unknown, unknown, unknown, unknown>[] | null>[]>;
|
|
24
24
|
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ResolvedCortexAgentConfig } from "../../config";
|
|
2
|
+
import type { ChatMessage, Thread } from "../../types";
|
|
3
|
+
/**
|
|
4
|
+
* Post-response context optimization, called fire-and-forget from onFinish.
|
|
5
|
+
*
|
|
6
|
+
* Below the summarization threshold this only refreshes the token estimate —
|
|
7
|
+
* summarizing early would burn a model call to compress context that still fits.
|
|
8
|
+
*/
|
|
9
|
+
export declare function optimizeThreadContext(thread: Thread, messages: ChatMessage[], config: ResolvedCortexAgentConfig): Promise<void>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { ContextConfig } from "./types
|
|
1
|
+
import type { ChatMessage } from "../../types";
|
|
2
|
+
import type { ContextConfig } from "./types";
|
|
3
3
|
type SummarizationModelConfig = NonNullable<ContextConfig["summarizationModel"]>;
|
|
4
|
-
export declare function summarizeMessages(messages:
|
|
4
|
+
export declare function summarizeMessages(messages: ChatMessage[], existingSummary: string | null, modelConfig: SummarizationModelConfig): Promise<string>;
|
|
5
5
|
export {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ChatMessage } from "../../types";
|
|
2
2
|
/** Average characters per token for English text. Used by the heuristic estimator. */
|
|
3
3
|
export declare const CHARS_PER_TOKEN = 4;
|
|
4
4
|
/**
|
|
@@ -6,15 +6,12 @@ export declare const CHARS_PER_TOKEN = 4;
|
|
|
6
6
|
* ~10% accuracy for English text — good enough for budget decisions.
|
|
7
7
|
*/
|
|
8
8
|
export declare function estimateTokens(text: string): number;
|
|
9
|
+
export declare function estimateMessageTokens(message: ChatMessage): number;
|
|
9
10
|
/**
|
|
10
|
-
* Estimates token
|
|
11
|
-
*/
|
|
12
|
-
export declare function estimateMessageTokens(message: UIMessage): number;
|
|
13
|
-
/**
|
|
14
|
-
* Estimates token counts for an array of UIMessages.
|
|
11
|
+
* Estimates token counts for an array of messages.
|
|
15
12
|
* Returns per-message estimates in the same order.
|
|
16
13
|
*/
|
|
17
|
-
export declare function estimateMessagesTokens(messages:
|
|
18
|
-
message:
|
|
14
|
+
export declare function estimateMessagesTokens(messages: ChatMessage[]): {
|
|
15
|
+
message: ChatMessage;
|
|
19
16
|
tokens: number;
|
|
20
17
|
}[];
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { ResolvedCortexAgentConfig } from "../config
|
|
1
|
+
import type { ResolvedCortexAgentConfig } from "../config";
|
|
2
2
|
export declare function fetchBackend(path: string, backendFetch: NonNullable<ResolvedCortexAgentConfig["backendFetch"]>, token: string, options?: RequestInit): Promise<Response>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ResolvedCortexAgentConfig } from "../config";
|
|
2
|
+
import type { ChatMessage, Thread } from "../types";
|
|
3
|
+
import type { CapturedStep } from "./inspector";
|
|
4
|
+
type FinishTurnOptions = {
|
|
5
|
+
/** What this run produced — the only messages the turn writes. */
|
|
6
|
+
messages: ChatMessage[];
|
|
7
|
+
/** The thread including them, which is what a summary has to be judged against. */
|
|
8
|
+
threadMessages: ChatMessage[];
|
|
9
|
+
isAborted: boolean;
|
|
10
|
+
assistantMessageId: string | undefined;
|
|
11
|
+
thread: Thread;
|
|
12
|
+
userId: string;
|
|
13
|
+
capturedSteps: CapturedStep[];
|
|
14
|
+
config: ResolvedCortexAgentConfig;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Persists everything a completed turn produced, then tells the client to refetch.
|
|
18
|
+
*
|
|
19
|
+
* The thread is re-read first: it may have been deleted mid-stream, in which case
|
|
20
|
+
* there is nothing to write to and the whole turn is discarded.
|
|
21
|
+
*/
|
|
22
|
+
export declare function finishTurn(options: FinishTurnOptions): Promise<void>;
|
|
23
|
+
export {};
|
|
@@ -1,5 +1,38 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
export
|
|
1
|
+
import { OpenAICompatibleChatAdapter } from "@tanstack/ai-openai/compatible";
|
|
2
|
+
/** Everything cortex needs to reach one OpenAI-compatible chat endpoint. */
|
|
3
|
+
export type ProviderConfig = {
|
|
4
|
+
baseURL: string;
|
|
5
|
+
apiKey: string;
|
|
6
|
+
modelName: string;
|
|
7
|
+
providerName?: string;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* `openaiCompatible()` drops streamed reasoning: its `extractReasoning` hook is
|
|
11
|
+
* a no-op and nothing shipped overrides it. Cortex renders thinking parts, so it
|
|
12
|
+
* takes the sanctioned subclass seam and reads the `reasoning_content` delta.
|
|
13
|
+
*/
|
|
14
|
+
declare class ReasoningChatAdapter extends OpenAICompatibleChatAdapter<string> {
|
|
15
|
+
protected extractReasoning(chunk: unknown): {
|
|
16
|
+
text: string;
|
|
17
|
+
} | undefined;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* `fetch` is how the caller observes or rewrites the raw HTTP exchange — the LLM
|
|
21
|
+
* inspector captures through it, the vision model adapts `max_tokens` through it.
|
|
22
|
+
*/
|
|
23
|
+
export declare function createModel(config: ProviderConfig, options?: {
|
|
24
|
+
name?: string;
|
|
25
|
+
fetch?: typeof globalThis.fetch;
|
|
26
|
+
}): ReasoningChatAdapter;
|
|
27
|
+
/** Vision calls cap output tokens, so they need the max_tokens parameter shim. */
|
|
28
|
+
export declare function createVisionModel(config: ProviderConfig): ReasoningChatAdapter;
|
|
4
29
|
export declare function streamToBase64(stream: ReadableStream<Uint8Array>): Promise<string>;
|
|
5
|
-
|
|
30
|
+
/**
|
|
31
|
+
* OpenAI's newer models reject `max_tokens` in favor of `max_completion_tokens`,
|
|
32
|
+
* while most OpenAI-compatible gateways only accept `max_tokens`. Retry once on
|
|
33
|
+
* that specific rejection and remember the answer for this fetch's lifetime.
|
|
34
|
+
*/
|
|
35
|
+
export declare function createMaxTokensAdaptingFetch(): ((input: string | URL | Request, init?: RequestInit) => Promise<Response>) & {
|
|
36
|
+
preconnect: typeof fetch.preconnect;
|
|
37
|
+
};
|
|
38
|
+
export {};
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import type {
|
|
3
|
-
|
|
1
|
+
import { chatParamsFromRequest } from "@tanstack/ai";
|
|
2
|
+
import type { ResolvedCortexAgentConfig } from "../config";
|
|
3
|
+
import type { Thread } from "../types";
|
|
4
|
+
/** The AG-UI request body, as the route parsed it. */
|
|
5
|
+
export type TurnParams = Awaited<ReturnType<typeof chatParamsFromRequest>>;
|
|
6
|
+
export declare function startTurn(params: TurnParams, thread: Thread, userId: string, token: string, requestContext: Record<string, unknown>, config: ResolvedCortexAgentConfig): Promise<Response | null>;
|
|
4
7
|
export declare function generateTitle(threadId: string, prompt: string, userId: string, config: ResolvedCortexAgentConfig): Promise<void>;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { ChatMiddleware, TokenUsage as ProviderTokenUsage } from "@tanstack/ai";
|
|
2
|
+
import type { TokenUsage } from "../types";
|
|
3
|
+
/** One model call's raw exchange, as the LLM request inspector renders it. */
|
|
4
|
+
export type CapturedStep = {
|
|
5
|
+
prompt: string;
|
|
6
|
+
output: string | null;
|
|
7
|
+
tokenUsage: TokenUsage | null;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Watches one turn's model calls. The SDK's `debug` logger reports call metadata
|
|
11
|
+
* but never raw bodies, so the raw exchange is captured where it actually
|
|
12
|
+
* exists — on the HTTP client — while usage arrives through middleware.
|
|
13
|
+
*/
|
|
14
|
+
export declare function createInspector(): {
|
|
15
|
+
steps: CapturedStep[];
|
|
16
|
+
middleware: ChatMiddleware<unknown>;
|
|
17
|
+
fetch: ((input: string | URL | Request, init?: RequestInit) => Promise<Response>) & {
|
|
18
|
+
preconnect: typeof fetch.preconnect;
|
|
19
|
+
};
|
|
20
|
+
readonly modelId: string;
|
|
21
|
+
readonly tokenUsage: TokenUsage | undefined;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Flattens the provider's usage shape into ours. The provider reports cached and
|
|
25
|
+
* cache-written prompt tokens but no uncached counter, so that dimension is the
|
|
26
|
+
* remainder — which is what makes the client's breakdown add up to the total.
|
|
27
|
+
*/
|
|
28
|
+
export declare function toTokenUsage(usage: ProviderTokenUsage): {
|
|
29
|
+
input: {
|
|
30
|
+
noCache: number;
|
|
31
|
+
cacheRead: number;
|
|
32
|
+
cacheWrite: number;
|
|
33
|
+
total: number;
|
|
34
|
+
};
|
|
35
|
+
output: {
|
|
36
|
+
reasoning: number;
|
|
37
|
+
text: number;
|
|
38
|
+
total: number;
|
|
39
|
+
};
|
|
40
|
+
total: number;
|
|
41
|
+
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { DatabaseAdapter } from "../../adapters/database
|
|
2
|
-
import type { StorageAdapter } from "../../adapters/storage
|
|
1
|
+
import type { DatabaseAdapter } from "../../adapters/database/index";
|
|
2
|
+
import type { StorageAdapter } from "../../adapters/storage/index";
|
|
3
3
|
export type ResolvedFile = {
|
|
4
4
|
name: string;
|
|
5
5
|
bytes: string;
|
|
@@ -7,6 +7,7 @@ export type ResolvedFile = {
|
|
|
7
7
|
export type RequestInterceptorOptions = {
|
|
8
8
|
transformFile?: (file: ResolvedFile) => unknown;
|
|
9
9
|
};
|
|
10
|
-
export declare function createRequestInterceptor(db: DatabaseAdapter, storage: StorageAdapter, options
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
export declare function createRequestInterceptor(db: DatabaseAdapter, storage: StorageAdapter, options: RequestInterceptorOptions & {
|
|
11
|
+
threadId: string;
|
|
12
|
+
userId: string;
|
|
13
|
+
}): (body: Record<string, unknown>) => Promise<Record<string, unknown>>;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import type { ResolvedContext } from "../graph/resolver
|
|
2
|
-
import type { PromptContext, ResolvedCortexAgentConfig } from "../config
|
|
3
|
-
import type { Thread } from "../types
|
|
1
|
+
import type { ResolvedContext } from "../graph/resolver";
|
|
2
|
+
import type { PromptContext, ResolvedCortexAgentConfig } from "../config";
|
|
3
|
+
import type { Thread } from "../types";
|
|
4
|
+
import type { CcPromptInput } from "../cc/format";
|
|
4
5
|
/**
|
|
5
6
|
* Resolves session data for the thread, loading from the configured
|
|
6
7
|
* session loader if not already cached on the thread.
|
|
7
8
|
*/
|
|
8
9
|
export declare function resolveSession(config: ResolvedCortexAgentConfig, thread: Thread, token: string): Promise<Record<string, unknown> | null>;
|
|
9
|
-
export declare function buildSystemPrompt(config: ResolvedCortexAgentConfig, resolved: ResolvedContext | null, promptContext: PromptContext): Promise<string>;
|
|
10
|
+
export declare function buildSystemPrompt(config: ResolvedCortexAgentConfig, resolved: ResolvedContext | null, promptContext: PromptContext, cc?: CcPromptInput, attachmentListing?: string): Promise<string>;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { RedisConnections } from "../redis";
|
|
2
|
+
import type { ActiveRun } from "./active-runs";
|
|
3
|
+
import { offsetBelongsToRun } from "./redis-stream-log";
|
|
4
|
+
type RedisRunOptions = {
|
|
5
|
+
streamTtlSeconds?: number;
|
|
6
|
+
};
|
|
7
|
+
export declare function createRedisRuns(connections: RedisConnections, options?: RedisRunOptions): {
|
|
8
|
+
startRun(threadId: string): Promise<ActiveRun>;
|
|
9
|
+
getRunId(threadId: string): Promise<string | undefined>;
|
|
10
|
+
runningThreadIds(threadIds: string[]): Promise<Set<string>>;
|
|
11
|
+
abortRun: (threadId: string) => Promise<boolean>;
|
|
12
|
+
endRun(threadId: string, runId: string): Promise<void>;
|
|
13
|
+
producerLog(runId: string): {
|
|
14
|
+
resumeFrom: () => string | null;
|
|
15
|
+
append: (chunks: import("@tanstack/ai").AGUIEvent[]) => Promise<string[]>;
|
|
16
|
+
snapshot: () => Promise<{
|
|
17
|
+
offset: string;
|
|
18
|
+
chunk: import("@tanstack/ai").StreamChunk;
|
|
19
|
+
}[]>;
|
|
20
|
+
close: () => Promise<void>;
|
|
21
|
+
read: (offset: string, signal?: AbortSignal) => AsyncGenerator<{
|
|
22
|
+
offset: string;
|
|
23
|
+
chunk: import("@tanstack/ai").StreamChunk;
|
|
24
|
+
}, void, any>;
|
|
25
|
+
};
|
|
26
|
+
joinLog(threadId: string, runId: string, offset?: string | undefined): {
|
|
27
|
+
resumeFrom: () => string | null;
|
|
28
|
+
append: (chunks: import("@tanstack/ai").AGUIEvent[]) => Promise<string[]>;
|
|
29
|
+
snapshot: () => Promise<{
|
|
30
|
+
offset: string;
|
|
31
|
+
chunk: import("@tanstack/ai").StreamChunk;
|
|
32
|
+
}[]>;
|
|
33
|
+
close: () => Promise<void>;
|
|
34
|
+
read: (offset: string, signal?: AbortSignal) => AsyncGenerator<{
|
|
35
|
+
offset: string;
|
|
36
|
+
chunk: import("@tanstack/ai").StreamChunk;
|
|
37
|
+
}, void, any>;
|
|
38
|
+
};
|
|
39
|
+
offsetBelongsToRun: typeof offsetBelongsToRun;
|
|
40
|
+
};
|
|
41
|
+
export {};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { Redis } from "ioredis";
|
|
2
|
+
import type { StreamChunk } from "@tanstack/ai";
|
|
3
|
+
/**
|
|
4
|
+
* Whether a client-supplied resume offset belongs to `runId`. The offset names
|
|
5
|
+
* the log it replays, so an offset naming another run would replay that run's
|
|
6
|
+
* log to whoever presents it — matching the prefix this adapter encodes is what
|
|
7
|
+
* binds a resume to the thread the caller owns.
|
|
8
|
+
*/
|
|
9
|
+
export declare function offsetBelongsToRun(offset: string, runId: string): boolean;
|
|
10
|
+
type RedisStreamLogOptions = {
|
|
11
|
+
/** `null` builds a producer (appends flow into the log); an offset builds a reader. */
|
|
12
|
+
resumeOffset: string | null;
|
|
13
|
+
/** How long the log stays replayable after its last append or `close()`. */
|
|
14
|
+
streamTtlMs: number;
|
|
15
|
+
/** How long a reader waits for the run's first entry before failing. */
|
|
16
|
+
firstChunkDeadlineMs: number;
|
|
17
|
+
/**
|
|
18
|
+
* Whether the run's producer is still alive. While it is, a caught-up
|
|
19
|
+
* reader parks indefinitely between chunks — the producer owns termination.
|
|
20
|
+
* Once it reports dead with the log still unclosed, the run was orphaned
|
|
21
|
+
* (producer crashed before `close()`), and the read fails so the joiner
|
|
22
|
+
* gets a terminal error instead of tailing forever.
|
|
23
|
+
*/
|
|
24
|
+
isLive?: () => Promise<boolean>;
|
|
25
|
+
};
|
|
26
|
+
export declare function redisStreamLog(redis: Redis, runId: string, options: RedisStreamLogOptions): {
|
|
27
|
+
resumeFrom: () => string | null;
|
|
28
|
+
append: (chunks: import("@tanstack/ai").AGUIEvent[]) => Promise<string[]>;
|
|
29
|
+
snapshot: () => Promise<{
|
|
30
|
+
offset: string;
|
|
31
|
+
chunk: StreamChunk;
|
|
32
|
+
}[]>;
|
|
33
|
+
close: () => Promise<void>;
|
|
34
|
+
read: (offset: string, signal?: AbortSignal) => AsyncGenerator<{
|
|
35
|
+
offset: string;
|
|
36
|
+
chunk: StreamChunk;
|
|
37
|
+
}, void, any>;
|
|
38
|
+
};
|
|
39
|
+
export {};
|
|
@@ -1,4 +1,18 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import z from "zod";
|
|
2
|
+
import type { ResolvedCortexAgentConfig } from "../../config";
|
|
3
|
+
import type { CcRuntime } from "../../cc/registry";
|
|
4
|
+
export type ExecuteCodeToolOptions = {
|
|
5
|
+
backendFetch?: NonNullable<ResolvedCortexAgentConfig["backendFetch"]>;
|
|
6
|
+
attachmentSentinels?: boolean;
|
|
7
|
+
token: string;
|
|
8
|
+
cc?: CcRuntime;
|
|
9
|
+
};
|
|
10
|
+
export declare function createExecuteCodeTool(options: ExecuteCodeToolOptions): import("@tanstack/ai").ServerTool<z.ZodObject<{
|
|
11
|
+
code: z.ZodString;
|
|
12
|
+
}, z.core.$strip>, undefined, "executeCode", unknown, false, undefined> & {
|
|
13
|
+
inputSchema: z.ZodObject<{
|
|
14
|
+
code: z.ZodString;
|
|
15
|
+
}, z.core.$strip>;
|
|
16
|
+
outputSchema: undefined;
|
|
17
|
+
approvalSchema: undefined;
|
|
18
|
+
};
|
|
@@ -1,5 +1,13 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import z from "zod";
|
|
2
|
+
import type { Neo4jClient } from "../../../../contracts/graph";
|
|
3
|
+
export declare function createQueryGraphTool(neo4j: Neo4jClient): import("@tanstack/ai").ServerTool<z.ZodObject<{
|
|
4
|
+
query: z.ZodString;
|
|
5
|
+
parameters: z.ZodOptional<z.ZodString>;
|
|
6
|
+
}, z.core.$strip>, undefined, "queryGraph", unknown, false, undefined> & {
|
|
7
|
+
inputSchema: z.ZodObject<{
|
|
8
|
+
query: z.ZodString;
|
|
9
|
+
parameters: z.ZodOptional<z.ZodString>;
|
|
10
|
+
}, z.core.$strip>;
|
|
11
|
+
outputSchema: undefined;
|
|
12
|
+
approvalSchema: undefined;
|
|
13
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import z from "zod";
|
|
2
|
+
import type { ResolvedCortexAgentConfig } from "../../config";
|
|
3
|
+
type ReadAttachmentToolOptions = {
|
|
4
|
+
db: ResolvedCortexAgentConfig["db"];
|
|
5
|
+
storage: NonNullable<ResolvedCortexAgentConfig["storage"]>;
|
|
6
|
+
vision: NonNullable<ResolvedCortexAgentConfig["vision"]>;
|
|
7
|
+
threadId: string;
|
|
8
|
+
userId: string;
|
|
9
|
+
};
|
|
10
|
+
export declare function createReadAttachmentTool(options: ReadAttachmentToolOptions): import("@tanstack/ai").ServerTool<z.ZodObject<{
|
|
11
|
+
attachmentId: z.ZodString;
|
|
12
|
+
query: z.ZodString;
|
|
13
|
+
}, z.core.$strip>, undefined, "readAttachment", unknown, false, undefined> & {
|
|
14
|
+
inputSchema: z.ZodObject<{
|
|
15
|
+
attachmentId: z.ZodString;
|
|
16
|
+
query: z.ZodString;
|
|
17
|
+
}, z.core.$strip>;
|
|
18
|
+
outputSchema: undefined;
|
|
19
|
+
approvalSchema: undefined;
|
|
20
|
+
};
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import z from "zod";
|
|
2
|
+
import type { CcRuntime } from "../../cc/registry";
|
|
3
|
+
/** The input shape all three catalog search tools share; only the query hint differs. */
|
|
4
|
+
export declare function searchInputSchema(queryDescription: string): z.ZodObject<{
|
|
5
|
+
query: z.ZodString;
|
|
6
|
+
limit: z.ZodOptional<z.ZodNumber>;
|
|
7
|
+
}, z.core.$strip>;
|
|
8
|
+
/** The runtime search request those tools send: the model's input plus the turn's context. */
|
|
9
|
+
export declare function searchRequest(cc: CcRuntime, input: {
|
|
10
|
+
query: string;
|
|
11
|
+
limit?: number;
|
|
12
|
+
}): {
|
|
13
|
+
locale: "en" | "ar";
|
|
14
|
+
threadId: string;
|
|
15
|
+
query: string;
|
|
16
|
+
limit?: number;
|
|
17
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import z from "zod";
|
|
2
|
+
import type { CcRuntime } from "../../cc/registry";
|
|
3
|
+
export declare function createSearchKnowledgeTool(cc: CcRuntime): import("@tanstack/ai").ServerTool<z.ZodObject<{
|
|
4
|
+
query: z.ZodString;
|
|
5
|
+
limit: z.ZodOptional<z.ZodNumber>;
|
|
6
|
+
service: z.ZodOptional<z.ZodString>;
|
|
7
|
+
}, z.core.$strip>, undefined, "searchKnowledge", unknown, false, undefined> & {
|
|
8
|
+
inputSchema: z.ZodObject<{
|
|
9
|
+
query: z.ZodString;
|
|
10
|
+
limit: z.ZodOptional<z.ZodNumber>;
|
|
11
|
+
service: z.ZodOptional<z.ZodString>;
|
|
12
|
+
}, z.core.$strip>;
|
|
13
|
+
outputSchema: undefined;
|
|
14
|
+
approvalSchema: undefined;
|
|
15
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { CcRuntime } from "../../cc/registry";
|
|
2
|
+
export declare function createSearchServicesTool(cc: CcRuntime): import("@tanstack/ai").ServerTool<import("zod").ZodObject<{
|
|
3
|
+
query: import("zod").ZodString;
|
|
4
|
+
limit: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
5
|
+
}, import("zod/v4/core").$strip>, undefined, "searchServices", unknown, false, undefined> & {
|
|
6
|
+
inputSchema: import("zod").ZodObject<{
|
|
7
|
+
query: import("zod").ZodString;
|
|
8
|
+
limit: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
9
|
+
}, import("zod/v4/core").$strip>;
|
|
10
|
+
outputSchema: undefined;
|
|
11
|
+
approvalSchema: undefined;
|
|
12
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { CcRuntime } from "../../cc/registry";
|
|
2
|
+
export declare function createSearchToolsTool(cc: CcRuntime): import("@tanstack/ai").ServerTool<import("zod").ZodObject<{
|
|
3
|
+
query: import("zod").ZodString;
|
|
4
|
+
limit: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
5
|
+
}, import("zod/v4/core").$strip>, undefined, "searchTools", unknown, false, undefined> & {
|
|
6
|
+
inputSchema: import("zod").ZodObject<{
|
|
7
|
+
query: import("zod").ZodString;
|
|
8
|
+
limit: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
9
|
+
}, import("zod/v4/core").$strip>;
|
|
10
|
+
outputSchema: undefined;
|
|
11
|
+
approvalSchema: undefined;
|
|
12
|
+
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { AnyServerTool } from "@tanstack/ai";
|
|
2
|
+
import type { ResolvedCortexAgentConfig } from "../config";
|
|
3
|
+
import type { Attachment, Thread } from "../types";
|
|
4
|
+
import type { CcRuntime } from "../cc/registry";
|
|
5
|
+
import type { Neo4jClient } from "../../../contracts/graph";
|
|
6
|
+
type TurnToolsOptions = {
|
|
7
|
+
config: ResolvedCortexAgentConfig;
|
|
8
|
+
cc: CcRuntime | undefined;
|
|
9
|
+
neo4j: Neo4jClient | undefined;
|
|
10
|
+
thread: Thread;
|
|
11
|
+
userId: string;
|
|
12
|
+
token: string;
|
|
13
|
+
session: Record<string, unknown> | null;
|
|
14
|
+
requestContext: Record<string, unknown>;
|
|
15
|
+
threadAttachments: Attachment[];
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Assembles the tool set for one turn: built-ins gated on what the agent has
|
|
19
|
+
* configured, then the agent's own tools.
|
|
20
|
+
*
|
|
21
|
+
* User tools are appended last and deliberately win on name collision — an agent
|
|
22
|
+
* must be able to replace a built-in it doesn't want.
|
|
23
|
+
*/
|
|
24
|
+
export declare function buildTurnTools(options: TurnToolsOptions): AnyServerTool[];
|
|
25
|
+
/**
|
|
26
|
+
* Instruments tool calls for the callbacks an agent configured. Returns
|
|
27
|
+
* `undefined` when nothing is listening, so the caller can skip the middleware
|
|
28
|
+
* entirely.
|
|
29
|
+
*/
|
|
30
|
+
export declare function createToolInstrumentation(options: TurnToolsOptions & {
|
|
31
|
+
onToolStart: (toolName: string, toolCallId: string) => void;
|
|
32
|
+
onToolFinish: (toolName: string, toolCallId: string) => void;
|
|
33
|
+
}): {
|
|
34
|
+
name: string;
|
|
35
|
+
onBeforeToolCall(_ctx: import("@tanstack/ai").ChatMiddlewareContext<unknown>, { toolName, toolCallId, args }: import("@tanstack/ai").ToolCallHookContext): void;
|
|
36
|
+
onAfterToolCall(_ctx: import("@tanstack/ai").ChatMiddlewareContext<unknown>, { toolName, toolCallId }: import("@tanstack/ai").AfterToolCallInfo): void;
|
|
37
|
+
} | undefined;
|
|
38
|
+
export declare function hasDefaultAttachmentInterceptor(config: ResolvedCortexAgentConfig): boolean;
|
|
39
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export type RasterizedPdf = {
|
|
2
|
+
pages: {
|
|
3
|
+
data: Uint8Array;
|
|
4
|
+
width: number;
|
|
5
|
+
height: number;
|
|
6
|
+
}[];
|
|
7
|
+
totalPages: number;
|
|
8
|
+
truncatedBy?: "page-limit" | "payload-limit";
|
|
9
|
+
};
|
|
10
|
+
export type RasterizePdfWorkerRequest = {
|
|
11
|
+
bytes: Uint8Array;
|
|
12
|
+
maxPayloadBytes?: number;
|
|
13
|
+
};
|
|
14
|
+
export type RasterizePdfWorkerResponse = {
|
|
15
|
+
status: "success";
|
|
16
|
+
result: RasterizedPdf;
|
|
17
|
+
} | {
|
|
18
|
+
status: "error";
|
|
19
|
+
message: string;
|
|
20
|
+
};
|
|
21
|
+
type RasterizePdfOptions = {
|
|
22
|
+
abortSignal?: AbortSignal;
|
|
23
|
+
maxPayloadBytes?: number;
|
|
24
|
+
};
|
|
25
|
+
export declare function rasterizePdf(bytes: Uint8Array, options?: RasterizePdfOptions): Promise<RasterizedPdf>;
|
|
26
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { ResolvedCortexAgentConfig } from "../../config";
|
|
2
|
+
type VisionConfig = NonNullable<ResolvedCortexAgentConfig["vision"]>;
|
|
3
|
+
export declare function describeAttachment(vision: VisionConfig, contentType: string, base64: string, abortSignal?: AbortSignal): Promise<{
|
|
4
|
+
status: "skipped";
|
|
5
|
+
error?: undefined;
|
|
6
|
+
text?: undefined;
|
|
7
|
+
note?: undefined;
|
|
8
|
+
} | {
|
|
9
|
+
status: "failed";
|
|
10
|
+
error: string;
|
|
11
|
+
text?: undefined;
|
|
12
|
+
note?: undefined;
|
|
13
|
+
} | {
|
|
14
|
+
status: "success";
|
|
15
|
+
text: string;
|
|
16
|
+
note: string;
|
|
17
|
+
error?: undefined;
|
|
18
|
+
} | {
|
|
19
|
+
status: "failed";
|
|
20
|
+
error?: undefined;
|
|
21
|
+
text?: undefined;
|
|
22
|
+
note?: undefined;
|
|
23
|
+
}>;
|
|
24
|
+
export declare function answerQuestionAbout(vision: VisionConfig, contentType: string, base64: string, query: string, abortSignal?: AbortSignal): Promise<{
|
|
25
|
+
status: "skipped";
|
|
26
|
+
error?: undefined;
|
|
27
|
+
text?: undefined;
|
|
28
|
+
note?: undefined;
|
|
29
|
+
} | {
|
|
30
|
+
status: "failed";
|
|
31
|
+
error: string;
|
|
32
|
+
text?: undefined;
|
|
33
|
+
note?: undefined;
|
|
34
|
+
} | {
|
|
35
|
+
status: "success";
|
|
36
|
+
text: string;
|
|
37
|
+
note: string;
|
|
38
|
+
error?: undefined;
|
|
39
|
+
} | {
|
|
40
|
+
status: "failed";
|
|
41
|
+
error?: undefined;
|
|
42
|
+
text?: undefined;
|
|
43
|
+
note?: undefined;
|
|
44
|
+
}>;
|
|
45
|
+
export {};
|