@cat-factory/node-server 0.168.0 → 0.169.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/dist/container-core-deps.js +1 -0
- package/dist/container-core-deps.js.map +1 -1
- package/dist/container-executor-deps.d.ts +5 -2
- package/dist/container-executor-deps.d.ts.map +1 -1
- package/dist/container-executor-deps.js +5 -1
- package/dist/container-executor-deps.js.map +1 -1
- package/dist/container-run-platform.d.ts +5 -1
- package/dist/container-run-platform.d.ts.map +1 -1
- package/dist/container-run-platform.js +2 -1
- package/dist/container-run-platform.js.map +1 -1
- package/dist/container-run-services-deps.d.ts +7 -2
- package/dist/container-run-services-deps.d.ts.map +1 -1
- package/dist/container-run-services-deps.js +24 -3
- package/dist/container-run-services-deps.js.map +1 -1
- package/dist/db/tables/observability.d.ts +247 -0
- package/dist/db/tables/observability.d.ts.map +1 -1
- package/dist/db/tables/observability.js +35 -2
- package/dist/db/tables/observability.js.map +1 -1
- package/dist/repositories/drizzle/telemetry.d.ts +11 -1
- package/dist/repositories/drizzle/telemetry.d.ts.map +1 -1
- package/dist/repositories/drizzle/telemetry.js +114 -1
- package/dist/repositories/drizzle/telemetry.js.map +1 -1
- package/dist/repositories/drizzle.d.ts +2 -1
- package/dist/repositories/drizzle.d.ts.map +1 -1
- package/dist/repositories/drizzle.js +2 -1
- package/dist/repositories/drizzle.js.map +1 -1
- package/dist/retention.d.ts +3 -1
- package/dist/retention.d.ts.map +1 -1
- package/dist/retention.js +2 -0
- package/dist/retention.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +1 -0
- package/dist/server.js.map +1 -1
- package/drizzle/20260804183612_familiar_post/migration.sql +23 -0
- package/drizzle/20260804183612_familiar_post/snapshot.json +20289 -0
- package/package.json +20 -20
|
@@ -785,6 +785,253 @@ export declare const agentSearchQueries: import("drizzle-orm/pg-core").PgTableWi
|
|
|
785
785
|
};
|
|
786
786
|
dialect: 'pg';
|
|
787
787
|
}>;
|
|
788
|
+
export declare const agentToolCalls: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
789
|
+
name: "agent_tool_calls";
|
|
790
|
+
schema: "telemetry";
|
|
791
|
+
columns: {
|
|
792
|
+
id: import("drizzle-orm/pg-core").PgBuildColumn<"agent_tool_calls", import("drizzle-orm/pg-core").SetIsPrimaryKey<import("drizzle-orm/pg-core").PgTextBuilder<[string, ...string[]]>>, {
|
|
793
|
+
name: string;
|
|
794
|
+
tableName: "agent_tool_calls";
|
|
795
|
+
dataType: "string";
|
|
796
|
+
data: string;
|
|
797
|
+
driverParam: string;
|
|
798
|
+
notNull: true;
|
|
799
|
+
hasDefault: false;
|
|
800
|
+
isPrimaryKey: false;
|
|
801
|
+
isAutoincrement: false;
|
|
802
|
+
hasRuntimeDefault: false;
|
|
803
|
+
enumValues: undefined;
|
|
804
|
+
identity: undefined;
|
|
805
|
+
generated: undefined;
|
|
806
|
+
}>;
|
|
807
|
+
workspace_id: import("drizzle-orm/pg-core").PgBuildColumn<"agent_tool_calls", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgTextBuilder<[string, ...string[]]>>, {
|
|
808
|
+
name: string;
|
|
809
|
+
tableName: "agent_tool_calls";
|
|
810
|
+
dataType: "string";
|
|
811
|
+
data: string;
|
|
812
|
+
driverParam: string;
|
|
813
|
+
notNull: true;
|
|
814
|
+
hasDefault: false;
|
|
815
|
+
isPrimaryKey: false;
|
|
816
|
+
isAutoincrement: false;
|
|
817
|
+
hasRuntimeDefault: false;
|
|
818
|
+
enumValues: undefined;
|
|
819
|
+
identity: undefined;
|
|
820
|
+
generated: undefined;
|
|
821
|
+
}>;
|
|
822
|
+
execution_id: import("drizzle-orm/pg-core").PgBuildColumn<"agent_tool_calls", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgTextBuilder<[string, ...string[]]>>, {
|
|
823
|
+
name: string;
|
|
824
|
+
tableName: "agent_tool_calls";
|
|
825
|
+
dataType: "string";
|
|
826
|
+
data: string;
|
|
827
|
+
driverParam: string;
|
|
828
|
+
notNull: true;
|
|
829
|
+
hasDefault: false;
|
|
830
|
+
isPrimaryKey: false;
|
|
831
|
+
isAutoincrement: false;
|
|
832
|
+
hasRuntimeDefault: false;
|
|
833
|
+
enumValues: undefined;
|
|
834
|
+
identity: undefined;
|
|
835
|
+
generated: undefined;
|
|
836
|
+
}>;
|
|
837
|
+
agent_kind: import("drizzle-orm/pg-core").PgBuildColumn<"agent_tool_calls", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgTextBuilder<[string, ...string[]]>>, {
|
|
838
|
+
name: string;
|
|
839
|
+
tableName: "agent_tool_calls";
|
|
840
|
+
dataType: "string";
|
|
841
|
+
data: string;
|
|
842
|
+
driverParam: string;
|
|
843
|
+
notNull: true;
|
|
844
|
+
hasDefault: false;
|
|
845
|
+
isPrimaryKey: false;
|
|
846
|
+
isAutoincrement: false;
|
|
847
|
+
hasRuntimeDefault: false;
|
|
848
|
+
enumValues: undefined;
|
|
849
|
+
identity: undefined;
|
|
850
|
+
generated: undefined;
|
|
851
|
+
}>;
|
|
852
|
+
job_id: import("drizzle-orm/pg-core").PgBuildColumn<"agent_tool_calls", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgTextBuilder<[string, ...string[]]>>, {
|
|
853
|
+
name: string;
|
|
854
|
+
tableName: "agent_tool_calls";
|
|
855
|
+
dataType: "string";
|
|
856
|
+
data: string;
|
|
857
|
+
driverParam: string;
|
|
858
|
+
notNull: true;
|
|
859
|
+
hasDefault: false;
|
|
860
|
+
isPrimaryKey: false;
|
|
861
|
+
isAutoincrement: false;
|
|
862
|
+
hasRuntimeDefault: false;
|
|
863
|
+
enumValues: undefined;
|
|
864
|
+
identity: undefined;
|
|
865
|
+
generated: undefined;
|
|
866
|
+
}>;
|
|
867
|
+
seq: import("drizzle-orm/pg-core").PgBuildColumn<"agent_tool_calls", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgIntegerBuilder>, {
|
|
868
|
+
name: string;
|
|
869
|
+
tableName: "agent_tool_calls";
|
|
870
|
+
dataType: "number int32";
|
|
871
|
+
data: number;
|
|
872
|
+
driverParam: string | number;
|
|
873
|
+
notNull: true;
|
|
874
|
+
hasDefault: false;
|
|
875
|
+
isPrimaryKey: false;
|
|
876
|
+
isAutoincrement: false;
|
|
877
|
+
hasRuntimeDefault: false;
|
|
878
|
+
enumValues: undefined;
|
|
879
|
+
identity: undefined;
|
|
880
|
+
generated: undefined;
|
|
881
|
+
}>;
|
|
882
|
+
tool: import("drizzle-orm/pg-core").PgBuildColumn<"agent_tool_calls", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgTextBuilder<[string, ...string[]]>>, {
|
|
883
|
+
name: string;
|
|
884
|
+
tableName: "agent_tool_calls";
|
|
885
|
+
dataType: "string";
|
|
886
|
+
data: string;
|
|
887
|
+
driverParam: string;
|
|
888
|
+
notNull: true;
|
|
889
|
+
hasDefault: false;
|
|
890
|
+
isPrimaryKey: false;
|
|
891
|
+
isAutoincrement: false;
|
|
892
|
+
hasRuntimeDefault: false;
|
|
893
|
+
enumValues: undefined;
|
|
894
|
+
identity: undefined;
|
|
895
|
+
generated: undefined;
|
|
896
|
+
}>;
|
|
897
|
+
started_at: import("drizzle-orm/pg-core").PgBuildColumn<"agent_tool_calls", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgBigInt53Builder>, {
|
|
898
|
+
name: string;
|
|
899
|
+
tableName: "agent_tool_calls";
|
|
900
|
+
dataType: "number int53";
|
|
901
|
+
data: number;
|
|
902
|
+
driverParam: string | number;
|
|
903
|
+
notNull: true;
|
|
904
|
+
hasDefault: false;
|
|
905
|
+
isPrimaryKey: false;
|
|
906
|
+
isAutoincrement: false;
|
|
907
|
+
hasRuntimeDefault: false;
|
|
908
|
+
enumValues: undefined;
|
|
909
|
+
identity: undefined;
|
|
910
|
+
generated: undefined;
|
|
911
|
+
}>;
|
|
912
|
+
ended_at: import("drizzle-orm/pg-core").PgBuildColumn<"agent_tool_calls", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgBigInt53Builder>, {
|
|
913
|
+
name: string;
|
|
914
|
+
tableName: "agent_tool_calls";
|
|
915
|
+
dataType: "number int53";
|
|
916
|
+
data: number;
|
|
917
|
+
driverParam: string | number;
|
|
918
|
+
notNull: true;
|
|
919
|
+
hasDefault: false;
|
|
920
|
+
isPrimaryKey: false;
|
|
921
|
+
isAutoincrement: false;
|
|
922
|
+
hasRuntimeDefault: false;
|
|
923
|
+
enumValues: undefined;
|
|
924
|
+
identity: undefined;
|
|
925
|
+
generated: undefined;
|
|
926
|
+
}>;
|
|
927
|
+
ok: import("drizzle-orm/pg-core").PgBuildColumn<"agent_tool_calls", import("drizzle-orm/pg-core").SetHasDefault<import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgIntegerBuilder>>, {
|
|
928
|
+
name: string;
|
|
929
|
+
tableName: "agent_tool_calls";
|
|
930
|
+
dataType: "number int32";
|
|
931
|
+
data: number;
|
|
932
|
+
driverParam: string | number;
|
|
933
|
+
notNull: true;
|
|
934
|
+
hasDefault: true;
|
|
935
|
+
isPrimaryKey: false;
|
|
936
|
+
isAutoincrement: false;
|
|
937
|
+
hasRuntimeDefault: false;
|
|
938
|
+
enumValues: undefined;
|
|
939
|
+
identity: undefined;
|
|
940
|
+
generated: undefined;
|
|
941
|
+
}>;
|
|
942
|
+
bodies: import("drizzle-orm/pg-core").PgBuildColumn<"agent_tool_calls", import("drizzle-orm/pg-core").SetHasDefault<import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgTextBuilder<[string, ...string[]]>>>, {
|
|
943
|
+
name: string;
|
|
944
|
+
tableName: "agent_tool_calls";
|
|
945
|
+
dataType: "string";
|
|
946
|
+
data: string;
|
|
947
|
+
driverParam: string;
|
|
948
|
+
notNull: true;
|
|
949
|
+
hasDefault: true;
|
|
950
|
+
isPrimaryKey: false;
|
|
951
|
+
isAutoincrement: false;
|
|
952
|
+
hasRuntimeDefault: false;
|
|
953
|
+
enumValues: undefined;
|
|
954
|
+
identity: undefined;
|
|
955
|
+
generated: undefined;
|
|
956
|
+
}>;
|
|
957
|
+
args: import("drizzle-orm/pg-core").PgBuildColumn<"agent_tool_calls", import("drizzle-orm/pg-core").SetHasDefault<import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgTextBuilder<[string, ...string[]]>>>, {
|
|
958
|
+
name: string;
|
|
959
|
+
tableName: "agent_tool_calls";
|
|
960
|
+
dataType: "string";
|
|
961
|
+
data: string;
|
|
962
|
+
driverParam: string;
|
|
963
|
+
notNull: true;
|
|
964
|
+
hasDefault: true;
|
|
965
|
+
isPrimaryKey: false;
|
|
966
|
+
isAutoincrement: false;
|
|
967
|
+
hasRuntimeDefault: false;
|
|
968
|
+
enumValues: undefined;
|
|
969
|
+
identity: undefined;
|
|
970
|
+
generated: undefined;
|
|
971
|
+
}>;
|
|
972
|
+
result: import("drizzle-orm/pg-core").PgBuildColumn<"agent_tool_calls", import("drizzle-orm/pg-core").SetHasDefault<import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgTextBuilder<[string, ...string[]]>>>, {
|
|
973
|
+
name: string;
|
|
974
|
+
tableName: "agent_tool_calls";
|
|
975
|
+
dataType: "string";
|
|
976
|
+
data: string;
|
|
977
|
+
driverParam: string;
|
|
978
|
+
notNull: true;
|
|
979
|
+
hasDefault: true;
|
|
980
|
+
isPrimaryKey: false;
|
|
981
|
+
isAutoincrement: false;
|
|
982
|
+
hasRuntimeDefault: false;
|
|
983
|
+
enumValues: undefined;
|
|
984
|
+
identity: undefined;
|
|
985
|
+
generated: undefined;
|
|
986
|
+
}>;
|
|
987
|
+
args_dropped: import("drizzle-orm/pg-core").PgBuildColumn<"agent_tool_calls", import("drizzle-orm/pg-core").SetHasDefault<import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgIntegerBuilder>>, {
|
|
988
|
+
name: string;
|
|
989
|
+
tableName: "agent_tool_calls";
|
|
990
|
+
dataType: "number int32";
|
|
991
|
+
data: number;
|
|
992
|
+
driverParam: string | number;
|
|
993
|
+
notNull: true;
|
|
994
|
+
hasDefault: true;
|
|
995
|
+
isPrimaryKey: false;
|
|
996
|
+
isAutoincrement: false;
|
|
997
|
+
hasRuntimeDefault: false;
|
|
998
|
+
enumValues: undefined;
|
|
999
|
+
identity: undefined;
|
|
1000
|
+
generated: undefined;
|
|
1001
|
+
}>;
|
|
1002
|
+
result_dropped: import("drizzle-orm/pg-core").PgBuildColumn<"agent_tool_calls", import("drizzle-orm/pg-core").SetHasDefault<import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgIntegerBuilder>>, {
|
|
1003
|
+
name: string;
|
|
1004
|
+
tableName: "agent_tool_calls";
|
|
1005
|
+
dataType: "number int32";
|
|
1006
|
+
data: number;
|
|
1007
|
+
driverParam: string | number;
|
|
1008
|
+
notNull: true;
|
|
1009
|
+
hasDefault: true;
|
|
1010
|
+
isPrimaryKey: false;
|
|
1011
|
+
isAutoincrement: false;
|
|
1012
|
+
hasRuntimeDefault: false;
|
|
1013
|
+
enumValues: undefined;
|
|
1014
|
+
identity: undefined;
|
|
1015
|
+
generated: undefined;
|
|
1016
|
+
}>;
|
|
1017
|
+
created_at: import("drizzle-orm/pg-core").PgBuildColumn<"agent_tool_calls", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgBigInt53Builder>, {
|
|
1018
|
+
name: string;
|
|
1019
|
+
tableName: "agent_tool_calls";
|
|
1020
|
+
dataType: "number int53";
|
|
1021
|
+
data: number;
|
|
1022
|
+
driverParam: string | number;
|
|
1023
|
+
notNull: true;
|
|
1024
|
+
hasDefault: false;
|
|
1025
|
+
isPrimaryKey: false;
|
|
1026
|
+
isAutoincrement: false;
|
|
1027
|
+
hasRuntimeDefault: false;
|
|
1028
|
+
enumValues: undefined;
|
|
1029
|
+
identity: undefined;
|
|
1030
|
+
generated: undefined;
|
|
1031
|
+
}>;
|
|
1032
|
+
};
|
|
1033
|
+
dialect: 'pg';
|
|
1034
|
+
}>;
|
|
788
1035
|
/**
|
|
789
1036
|
* One flat row per SETTLED polling gate, so the gate / CI-fixer attempt statistics are an
|
|
790
1037
|
* ordinary aggregate over columns rather than a `jsonb_array_elements` expansion of the run's
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observability.d.ts","sourceRoot":"","sources":["../../../src/db/tables/observability.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"observability.d.ts","sourceRoot":"","sources":["../../../src/db/tables/observability.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,SAAS,qDAAwB,CAAA;AAM9C,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgD1B,CAAA;AAQD,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuBjC,CAAA;AAMD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiB9B,CAAA;AAQD,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkC1B,CAAA;AAOD;;;;;GAKG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsBxB,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAc3B,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAI9B,CAAA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { bigint, index, integer, pgSchema, pgTable, primaryKey, text } from 'drizzle-orm/pg-core';
|
|
2
|
-
// The observability schema: the
|
|
3
|
-
// per dispatched agent context, per web search a container agent performed
|
|
2
|
+
// The observability schema: the four append-heavy TELEMETRY sinks (one row per model call,
|
|
3
|
+
// per dispatched agent context, per web search a container agent performed, per tool call it
|
|
4
|
+
// made) plus the two
|
|
4
5
|
// deployment-level PROJECTIONS the operator dashboard aggregates (settled gates, and the daily
|
|
5
6
|
// run rollup behind the long windows).
|
|
6
7
|
//
|
|
@@ -108,6 +109,38 @@ export const agentSearchQueries = telemetry.table('agent_search_queries', {
|
|
|
108
109
|
index('idx_agent_search_queries_execution').on(t.workspace_id, t.execution_id, t.created_at),
|
|
109
110
|
index('idx_agent_search_queries_created').on(t.created_at),
|
|
110
111
|
]);
|
|
112
|
+
// One tool invocation an agent made, in trajectory order — what the agent DID, beside the
|
|
113
|
+
// per-call cost (`llm_call_metrics`) and the context it was given (`agent_context_snapshots`).
|
|
114
|
+
// The metadata is always recorded; `args`/`result` ride the same LLM_RECORD_PROMPTS +
|
|
115
|
+
// storeAgentContext double gate as the other body-bearing sinks, and `bodies` says which, so a
|
|
116
|
+
// withheld body never reads as a tool that took no arguments. Pruned on the same retention
|
|
117
|
+
// window. Mirrors the D1 agent_tool_calls table column-for-column.
|
|
118
|
+
export const agentToolCalls = telemetry.table('agent_tool_calls', {
|
|
119
|
+
id: text('id').primaryKey(),
|
|
120
|
+
workspace_id: text('workspace_id').notNull(),
|
|
121
|
+
execution_id: text('execution_id').notNull(),
|
|
122
|
+
agent_kind: text('agent_kind').notNull(),
|
|
123
|
+
// The dispatch the call was made in: the drill-down filter, and the scope `seq` is
|
|
124
|
+
// numbered within. It is deliberately NOT the trajectory's sort key — a job id is a
|
|
125
|
+
// string, so ordering by it sorts a run's dispatches by agent-kind spelling.
|
|
126
|
+
job_id: text('job_id').notNull(),
|
|
127
|
+
seq: integer('seq').notNull(),
|
|
128
|
+
tool: text('tool').notNull(),
|
|
129
|
+
started_at: bigint('started_at', { mode: 'number' }).notNull(),
|
|
130
|
+
ended_at: bigint('ended_at', { mode: 'number' }).notNull(),
|
|
131
|
+
ok: integer('ok').notNull().default(1),
|
|
132
|
+
bodies: text('bodies').notNull().default('withheld'),
|
|
133
|
+
args: text('args').notNull().default(''),
|
|
134
|
+
result: text('result').notNull().default(''),
|
|
135
|
+
args_dropped: integer('args_dropped').notNull().default(0),
|
|
136
|
+
result_dropped: integer('result_dropped').notNull().default(0),
|
|
137
|
+
created_at: bigint('created_at', { mode: 'number' }).notNull(),
|
|
138
|
+
}, (t) => [
|
|
139
|
+
index('idx_agent_tool_calls_trajectory').on(t.workspace_id, t.execution_id, t.started_at, t.seq),
|
|
140
|
+
index('idx_agent_tool_calls_execution').on(t.workspace_id, t.execution_id, t.created_at),
|
|
141
|
+
index('idx_agent_tool_calls_job').on(t.workspace_id, t.execution_id, t.job_id, t.created_at),
|
|
142
|
+
index('idx_agent_tool_calls_created').on(t.created_at),
|
|
143
|
+
]);
|
|
111
144
|
// ---------------------------------------------------------------------------
|
|
112
145
|
// Platform-operator observability projections (mirrors D1 migration 0079). Both are read by
|
|
113
146
|
// the account-scoped dashboard rollups; see the D1 migration for the full rationale.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observability.js","sourceRoot":"","sources":["../../../src/db/tables/observability.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAEjG,
|
|
1
|
+
{"version":3,"file":"observability.js","sourceRoot":"","sources":["../../../src/db/tables/observability.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AgentContextIndexQuery, AgentContextRunPageQuery, AgentContextSnapshot, AgentContextSnapshotIndex, AgentContextSnapshotRepository, AgentSearchQuery, AgentSearchQueryPageQuery, AgentSearchQueryRepository, BinaryArtifactMetadataStore, BinaryArtifactRecord, LlmCallBodyWindow, LlmCallMetric, LlmCallMetricPage, LlmCallMetricRepository, LlmCallMetricSummary, LlmCallPageQuery, LlmCallRunPageQuery, LlmPromptChainTip, ProvisioningLogQuery, ProvisioningLogRecord, ProvisioningLogRepository, TokenUsageRecord, TokenUsageRepository, TokenUsageTotals, UsageBreakdownRow } from '@cat-factory/kernel';
|
|
1
|
+
import type { AgentContextIndexQuery, AgentContextRunPageQuery, AgentContextSnapshot, AgentContextSnapshotIndex, AgentContextSnapshotRepository, AgentSearchQuery, AgentSearchQueryPageQuery, AgentSearchQueryRepository, AgentToolCall, AgentToolCallPageQuery, AgentToolCallRepository, AgentToolCallTrajectoryQuery, BinaryArtifactMetadataStore, BinaryArtifactRecord, LlmCallBodyWindow, LlmCallMetric, LlmCallMetricPage, LlmCallMetricRepository, LlmCallMetricSummary, LlmCallPageQuery, LlmCallRunPageQuery, LlmPromptChainTip, ProvisioningLogQuery, ProvisioningLogRecord, ProvisioningLogRepository, TokenUsageRecord, TokenUsageRepository, TokenUsageTotals, UsageBreakdownRow } from '@cat-factory/kernel';
|
|
2
2
|
import type { DrizzleDb } from '../../db/client.js';
|
|
3
3
|
export declare class DrizzleTokenUsageRepository implements TokenUsageRepository {
|
|
4
4
|
private readonly db;
|
|
@@ -46,6 +46,16 @@ export declare class DrizzleAgentSearchQueryRepository implements AgentSearchQue
|
|
|
46
46
|
countByExecution(workspaceId: string, executionId: string): Promise<number>;
|
|
47
47
|
deleteOlderThan(epochMs: number): Promise<number>;
|
|
48
48
|
}
|
|
49
|
+
/** Drizzle/Postgres sink for the tool-call trajectory (mirror of D1 migration 0005). */
|
|
50
|
+
export declare class DrizzleAgentToolCallRepository implements AgentToolCallRepository {
|
|
51
|
+
private readonly db;
|
|
52
|
+
constructor(db: DrizzleDb);
|
|
53
|
+
recordMany(calls: AgentToolCall[]): Promise<void>;
|
|
54
|
+
listByExecution(workspaceId: string, query: AgentToolCallTrajectoryQuery): Promise<AgentToolCall[]>;
|
|
55
|
+
listPage(workspaceId: string, query: AgentToolCallPageQuery): Promise<AgentToolCall[]>;
|
|
56
|
+
countByExecution(workspaceId: string, executionId: string): Promise<number>;
|
|
57
|
+
deleteOlderThan(epochMs: number): Promise<number>;
|
|
58
|
+
}
|
|
49
59
|
/** Drizzle/Postgres metadata store for binary artifacts (mirror of D1 migration 0017). */
|
|
50
60
|
export declare class DrizzleBinaryArtifactMetadataStore implements BinaryArtifactMetadataStore {
|
|
51
61
|
private readonly db;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../../src/repositories/drizzle/telemetry.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,sBAAsB,EACtB,wBAAwB,EACxB,oBAAoB,EACpB,yBAAyB,EACzB,8BAA8B,EAC9B,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,EAC3B,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,EAEpB,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EACzB,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAEhB,iBAAiB,EAClB,MAAM,qBAAqB,CAAA;AAoB5B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../../src/repositories/drizzle/telemetry.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ import { parseJsonArray } from './_shared.js';
|
|
|
7
7
|
import { LLM_WARNING_FINISH_REASONS, escapeLikePattern } from '@cat-factory/kernel';
|
|
8
8
|
import { isWebSearchProvider } from '@cat-factory/contracts';
|
|
9
9
|
import { and, asc, count, desc, eq, gt, gte, ilike, inArray, isNull, lt, notInArray, or, sql, } from 'drizzle-orm';
|
|
10
|
-
import { agentContextSnapshots, agentSearchQueries, binaryArtifacts, llmCallMetrics, provisioningLog, tokenUsage, } from '../../db/schema.js';
|
|
10
|
+
import { agentContextSnapshots, agentSearchQueries, agentToolCalls, binaryArtifacts, llmCallMetrics, provisioningLog, tokenUsage, } from '../../db/schema.js';
|
|
11
11
|
export class DrizzleTokenUsageRepository {
|
|
12
12
|
db;
|
|
13
13
|
constructor(db) {
|
|
@@ -834,6 +834,119 @@ export class DrizzleAgentSearchQueryRepository {
|
|
|
834
834
|
return deleted.length;
|
|
835
835
|
}
|
|
836
836
|
}
|
|
837
|
+
function rowToAgentToolCall(row) {
|
|
838
|
+
return {
|
|
839
|
+
id: row.id,
|
|
840
|
+
workspaceId: row.workspace_id,
|
|
841
|
+
executionId: row.execution_id,
|
|
842
|
+
agentKind: row.agent_kind,
|
|
843
|
+
jobId: row.job_id,
|
|
844
|
+
seq: row.seq,
|
|
845
|
+
tool: row.tool,
|
|
846
|
+
startedAt: row.started_at,
|
|
847
|
+
endedAt: row.ended_at,
|
|
848
|
+
ok: row.ok === 1,
|
|
849
|
+
// The stored column is free-text; narrow it back to the wire union. Anything else reads as
|
|
850
|
+
// `withheld`, the answer that claims nothing about a body we cannot account for.
|
|
851
|
+
bodies: row.bodies === 'stored' ? 'stored' : 'withheld',
|
|
852
|
+
args: row.args,
|
|
853
|
+
result: row.result,
|
|
854
|
+
argsDropped: row.args_dropped,
|
|
855
|
+
resultDropped: row.result_dropped,
|
|
856
|
+
createdAt: row.created_at,
|
|
857
|
+
};
|
|
858
|
+
}
|
|
859
|
+
/** One tool call as its insert row. */
|
|
860
|
+
function toolCallValues(call) {
|
|
861
|
+
return {
|
|
862
|
+
id: call.id,
|
|
863
|
+
workspace_id: call.workspaceId,
|
|
864
|
+
execution_id: call.executionId,
|
|
865
|
+
agent_kind: call.agentKind,
|
|
866
|
+
job_id: call.jobId,
|
|
867
|
+
seq: call.seq,
|
|
868
|
+
tool: call.tool,
|
|
869
|
+
started_at: call.startedAt,
|
|
870
|
+
ended_at: call.endedAt,
|
|
871
|
+
ok: call.ok ? 1 : 0,
|
|
872
|
+
bodies: call.bodies,
|
|
873
|
+
args: call.args,
|
|
874
|
+
result: call.result,
|
|
875
|
+
args_dropped: call.argsDropped,
|
|
876
|
+
result_dropped: call.resultDropped,
|
|
877
|
+
created_at: call.createdAt,
|
|
878
|
+
};
|
|
879
|
+
}
|
|
880
|
+
/** Drizzle/Postgres sink for the tool-call trajectory (mirror of D1 migration 0005). */
|
|
881
|
+
export class DrizzleAgentToolCallRepository {
|
|
882
|
+
db;
|
|
883
|
+
constructor(db) {
|
|
884
|
+
this.db = db;
|
|
885
|
+
}
|
|
886
|
+
async recordMany(calls) {
|
|
887
|
+
// First write wins, never an upsert: a re-offered call is byte-identical to the stored one
|
|
888
|
+
// (its id derives from `(jobId, seq)`), so a durable replay or a retried ingest is a no-op.
|
|
889
|
+
for (const batch of chunks(calls, INSERT_CHUNK_ROWS)) {
|
|
890
|
+
await this.db
|
|
891
|
+
.insert(agentToolCalls)
|
|
892
|
+
.values(batch.map(toolCallValues))
|
|
893
|
+
.onConflictDoNothing({ target: agentToolCalls.id });
|
|
894
|
+
}
|
|
895
|
+
}
|
|
896
|
+
async listByExecution(workspaceId, query) {
|
|
897
|
+
// Trajectory order: oldest first by the call's own start — `created_at` cannot carry it,
|
|
898
|
+
// since a whole poll window's calls share one stamp, and `job_id` is a string that would
|
|
899
|
+
// sort a run's dispatches alphabetically. `seq` separates the calls sharing a millisecond
|
|
900
|
+
// and `id` makes the order total. The limit takes the OLDEST end, so a truncated read is a
|
|
901
|
+
// prefix of the run rather than a middle slice with no beginning.
|
|
902
|
+
const filters = [
|
|
903
|
+
eq(agentToolCalls.workspace_id, workspaceId),
|
|
904
|
+
eq(agentToolCalls.execution_id, query.executionId),
|
|
905
|
+
];
|
|
906
|
+
if (query.jobId)
|
|
907
|
+
filters.push(eq(agentToolCalls.job_id, query.jobId));
|
|
908
|
+
const rows = await this.db
|
|
909
|
+
.select()
|
|
910
|
+
.from(agentToolCalls)
|
|
911
|
+
.where(and(...filters))
|
|
912
|
+
.orderBy(asc(agentToolCalls.started_at), asc(agentToolCalls.seq), asc(agentToolCalls.id))
|
|
913
|
+
.limit(query.limit);
|
|
914
|
+
return rows.map(rowToAgentToolCall);
|
|
915
|
+
}
|
|
916
|
+
async listPage(workspaceId, query) {
|
|
917
|
+
const filters = [
|
|
918
|
+
eq(agentToolCalls.workspace_id, workspaceId),
|
|
919
|
+
eq(agentToolCalls.execution_id, query.executionId),
|
|
920
|
+
];
|
|
921
|
+
if (query.jobId)
|
|
922
|
+
filters.push(eq(agentToolCalls.job_id, query.jobId));
|
|
923
|
+
if (query.cursor) {
|
|
924
|
+
const { createdAt, id } = query.cursor;
|
|
925
|
+
filters.push(or(lt(agentToolCalls.created_at, createdAt), and(eq(agentToolCalls.created_at, createdAt), lt(agentToolCalls.id, id))));
|
|
926
|
+
}
|
|
927
|
+
const rows = await this.db
|
|
928
|
+
.select()
|
|
929
|
+
.from(agentToolCalls)
|
|
930
|
+
.where(and(...filters))
|
|
931
|
+
.orderBy(desc(agentToolCalls.created_at), desc(agentToolCalls.id))
|
|
932
|
+
.limit(query.limit);
|
|
933
|
+
return rows.map(rowToAgentToolCall);
|
|
934
|
+
}
|
|
935
|
+
async countByExecution(workspaceId, executionId) {
|
|
936
|
+
const rows = await this.db
|
|
937
|
+
.select({ n: count() })
|
|
938
|
+
.from(agentToolCalls)
|
|
939
|
+
.where(and(eq(agentToolCalls.workspace_id, workspaceId), eq(agentToolCalls.execution_id, executionId)));
|
|
940
|
+
return Number(rows[0]?.n ?? 0);
|
|
941
|
+
}
|
|
942
|
+
async deleteOlderThan(epochMs) {
|
|
943
|
+
const deleted = await this.db
|
|
944
|
+
.delete(agentToolCalls)
|
|
945
|
+
.where(lt(agentToolCalls.created_at, epochMs))
|
|
946
|
+
.returning({ id: agentToolCalls.id });
|
|
947
|
+
return deleted.length;
|
|
948
|
+
}
|
|
949
|
+
}
|
|
837
950
|
function rowToBinaryArtifact(row) {
|
|
838
951
|
return {
|
|
839
952
|
id: row.id,
|