@kinotic-ai/os-api 1.14.1 → 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/dist/index.cjs CHANGED
@@ -79,6 +79,7 @@ __export(exports_src, {
79
79
  MemberService: () => MemberService,
80
80
  LoggersDescriptor: () => LoggersDescriptor,
81
81
  LoggerLevelsDescriptor: () => LoggerLevelsDescriptor,
82
+ LogService: () => LogService,
82
83
  LogManager: () => LogManager,
83
84
  LogLevel: () => LogLevel,
84
85
  KinoticProjectConfig: () => KinoticProjectConfig,
@@ -412,11 +413,15 @@ class Workload {
412
413
  id = null;
413
414
  name;
414
415
  description;
416
+ organizationId = null;
417
+ applicationId = null;
415
418
  providerType = "BOXLITE" /* BOXLITE */;
416
419
  image;
417
420
  vcpus = 1;
418
421
  memoryMb = 512;
419
422
  diskSizeMb = 1024;
423
+ detached = true;
424
+ autoRemove = false;
420
425
  status = "PENDING" /* PENDING */;
421
426
  environment = {};
422
427
  portMappings = [];
@@ -684,6 +689,19 @@ class LogManager {
684
689
  return this.serviceProxy.invoke("configureLogLevel", [name, level], nodeId);
685
690
  }
686
691
  }
692
+ // packages/os-api/src/api/services/ILogService.ts
693
+ class LogService {
694
+ serviceProxy;
695
+ constructor(kinotic) {
696
+ this.serviceProxy = kinotic.serviceProxy("org.kinotic.os.api.services.LogService");
697
+ }
698
+ tail(workloadId) {
699
+ return this.serviceProxy.invokeStream("tail", [workloadId]);
700
+ }
701
+ history(query) {
702
+ return this.serviceProxy.invoke("history", [query]);
703
+ }
704
+ }
687
705
  // packages/os-api/src/api/services/IEntityDefinitionService.ts
688
706
  var import_core4 = require("@kinotic-ai/core");
689
707
 
package/dist/index.d.cts CHANGED
@@ -485,6 +485,16 @@ declare class Workload implements Identifiable6<string> {
485
485
  */
486
486
  description?: string;
487
487
  /**
488
+ * The Organization this workload runs on behalf of, and which may view its logs.
489
+ * Null for platform workloads (SYSTEM scope).
490
+ */
491
+ organizationId: string | null;
492
+ /**
493
+ * The Application this workload runs on behalf of, or null if none.
494
+ * When set, organizationId must also be set.
495
+ */
496
+ applicationId: string | null;
497
+ /**
488
498
  * The VM provider to use for this workload.
489
499
  */
490
500
  providerType: VmProviderType;
@@ -505,6 +515,17 @@ declare class Workload implements Identifiable6<string> {
505
515
  */
506
516
  diskSizeMb: number;
507
517
  /**
518
+ * When true the VM runs detached from the vm-manager process and survives its
519
+ * restarts. Non-detached workloads end when the vm-manager exits.
520
+ */
521
+ detached: boolean;
522
+ /**
523
+ * When true the VM and its disk are discarded when the workload stops, so a
524
+ * stopped workload cannot be restarted. When false the disk is kept and the
525
+ * workload may be restarted in place.
526
+ */
527
+ autoRemove: boolean;
528
+ /**
508
529
  * Current status of the workload.
509
530
  */
510
531
  status: WorkloadStatus;
@@ -525,7 +546,9 @@ declare class Workload implements Identifiable6<string> {
525
546
  */
526
547
  entrypoint: string[];
527
548
  /**
528
- * Overrides the image command (CMD). Empty keeps the image default.
549
+ * Overrides the image command (CMD). Empty keeps the image default, unless
550
+ * entrypoint is declared — then the image CMD is dropped so the entrypoint
551
+ * runs exactly as given.
529
552
  */
530
553
  cmd: string[];
531
554
  /**
@@ -596,6 +619,19 @@ declare class VmNode implements Identifiable7<string> {
596
619
  constructor(id: string, name: string, hostname: string);
597
620
  }
598
621
  /**
622
+ * Parameters for a historical log query: one workload's logs over a time range.
623
+ */
624
+ interface LogQuery {
625
+ /** Id of the workload whose logs to return. */
626
+ workloadId: string;
627
+ /** Start of the time range, epoch milliseconds (inclusive). */
628
+ start: number;
629
+ /** End of the time range, epoch milliseconds (inclusive). */
630
+ end: number;
631
+ /** Maximum number of log entries to return. */
632
+ limit: number;
633
+ }
634
+ /**
599
635
  * Authentication method for an {@link IamUser}.
600
636
  */
601
637
  declare enum AuthType {
@@ -1032,7 +1068,33 @@ declare class LogManager implements ILogManager {
1032
1068
  loggerLevels(nodeId: string, name: string): Promise<LoggerLevelsDescriptor>;
1033
1069
  configureLogLevel(nodeId: string, name: string, level: LogLevel): Promise<void>;
1034
1070
  }
1035
- import { CrudServiceProxy as CrudServiceProxy4, IKinotic as IKinotic5, ICrudServiceProxy as ICrudServiceProxy4, IterablePage as IterablePage2, Page, Pageable as Pageable2 } from "@kinotic-ai/core";
1071
+ import { IKinotic as IKinotic5 } from "@kinotic-ai/core";
1072
+ import { Observable } from "rxjs";
1073
+ /**
1074
+ * Streams and queries the logs of workloads the authenticated participant may view: an
1075
+ * organization participant sees its own organization's workloads, a system participant sees any.
1076
+ * Both methods yield the raw Loki response bytes; the caller parses Loki's wire format.
1077
+ */
1078
+ interface ILogService {
1079
+ /**
1080
+ * Opens a live tail of the given workload's logs. Each emission is a raw Loki tail frame,
1081
+ * and the stream stays open until unsubscribed.
1082
+ * @param workloadId the id of the workload to follow
1083
+ */
1084
+ tail(workloadId: string): Observable<Uint8Array>;
1085
+ /**
1086
+ * Returns a workload's historical logs as the raw Loki query_range response.
1087
+ * @param query the workload, time range, and limit
1088
+ */
1089
+ history(query: LogQuery): Promise<Uint8Array>;
1090
+ }
1091
+ declare class LogService implements ILogService {
1092
+ private readonly serviceProxy;
1093
+ constructor(kinotic: IKinotic5);
1094
+ tail(workloadId: string): Observable<Uint8Array>;
1095
+ history(query: LogQuery): Promise<Uint8Array>;
1096
+ }
1097
+ import { CrudServiceProxy as CrudServiceProxy4, IKinotic as IKinotic6, ICrudServiceProxy as ICrudServiceProxy4, IterablePage as IterablePage2, Page, Pageable as Pageable2 } from "@kinotic-ai/core";
1036
1098
  interface IEntityDefinitionService extends ICrudServiceProxy4<EntityDefinition> {
1037
1099
  /**
1038
1100
  * Counts all entity definitions for the given application.
@@ -1087,7 +1149,7 @@ interface IEntityDefinitionService extends ICrudServiceProxy4<EntityDefinition>
1087
1149
  unPublish(entityDefinitionId: string): Promise<void>;
1088
1150
  }
1089
1151
  declare class EntityDefinitionService extends CrudServiceProxy4<EntityDefinition> implements IEntityDefinitionService {
1090
- constructor(kinotic: IKinotic5);
1152
+ constructor(kinotic: IKinotic6);
1091
1153
  countForApplication(applicationId: string): Promise<number>;
1092
1154
  countForProject(projectId: string): Promise<number>;
1093
1155
  findAllForApplicationSinglePage(applicationId: string, pageable: Pageable2): Promise<Page<EntityDefinition>>;
@@ -1099,7 +1161,7 @@ declare class EntityDefinitionService extends CrudServiceProxy4<EntityDefinition
1099
1161
  unPublish(entityDefinitionId: string): Promise<void>;
1100
1162
  syncIndex(): Promise<void>;
1101
1163
  }
1102
- import { IKinotic as IKinotic6 } from "@kinotic-ai/core";
1164
+ import { IKinotic as IKinotic7 } from "@kinotic-ai/core";
1103
1165
  import { CrudServiceProxy as CrudServiceProxy5, ICrudServiceProxy as ICrudServiceProxy5 } from "@kinotic-ai/core";
1104
1166
  interface INamedQueriesDefinitionService extends ICrudServiceProxy5<NamedQueriesDefinition> {
1105
1167
  /**
@@ -1109,10 +1171,10 @@ interface INamedQueriesDefinitionService extends ICrudServiceProxy5<NamedQueries
1109
1171
  syncIndex(): Promise<void>;
1110
1172
  }
1111
1173
  declare class NamedQueriesDefinitionService extends CrudServiceProxy5<NamedQueriesDefinition> implements INamedQueriesDefinitionService {
1112
- constructor(kinotic: IKinotic6);
1174
+ constructor(kinotic: IKinotic7);
1113
1175
  syncIndex(): Promise<void>;
1114
1176
  }
1115
- import { IKinotic as IKinotic7 } from "@kinotic-ai/core";
1177
+ import { IKinotic as IKinotic8 } from "@kinotic-ai/core";
1116
1178
  /**
1117
1179
  * Service for executing project-specific migrations through the Persistence API.
1118
1180
  * This service allows external clients to apply their own migrations to projects.
@@ -1144,13 +1206,13 @@ interface IMigrationService {
1144
1206
  }
1145
1207
  declare class MigrationService implements IMigrationService {
1146
1208
  private readonly serviceProxy;
1147
- constructor(kinotic: IKinotic7);
1209
+ constructor(kinotic: IKinotic8);
1148
1210
  executeMigrations(migrationRequest: MigrationRequest): Promise<MigrationResult>;
1149
1211
  getLastAppliedMigrationVersion(projectId: string): Promise<number | null>;
1150
1212
  isMigrationApplied(projectId: string, version: string): Promise<boolean>;
1151
1213
  }
1152
- import { IKinotic as IKinotic8 } from "@kinotic-ai/core";
1153
- import { Observable } from "rxjs";
1214
+ import { IKinotic as IKinotic9 } from "@kinotic-ai/core";
1215
+ import { Observable as Observable2 } from "rxjs";
1154
1216
  /**
1155
1217
  * Provides AI-powered data analysis and visualization code generation capabilities.
1156
1218
  * This service analyzes user queries about their structures and generates appropriate
@@ -1164,14 +1226,14 @@ interface IDataInsightsService {
1164
1226
  * @param request the analysis request containing query and context
1165
1227
  * @return Observable that emits progress updates and completes with the final response
1166
1228
  */
1167
- processRequest(request: InsightRequest): Observable<InsightProgress>;
1229
+ processRequest(request: InsightRequest): Observable2<InsightProgress>;
1168
1230
  }
1169
1231
  declare class DataInsightsService implements IDataInsightsService {
1170
1232
  private readonly serviceProxy;
1171
- constructor(kinotic: IKinotic8);
1172
- processRequest(request: InsightRequest): Observable<InsightProgress>;
1233
+ constructor(kinotic: IKinotic9);
1234
+ processRequest(request: InsightRequest): Observable2<InsightProgress>;
1173
1235
  }
1174
- import { IKinotic as IKinotic9 } from "@kinotic-ai/core";
1236
+ import { IKinotic as IKinotic10 } from "@kinotic-ai/core";
1175
1237
  import { CrudServiceProxy as CrudServiceProxy6, ICrudServiceProxy as ICrudServiceProxy6 } from "@kinotic-ai/core";
1176
1238
  interface IVmNodeService extends ICrudServiceProxy6<VmNode> {
1177
1239
  /**
@@ -1189,11 +1251,11 @@ interface IVmNodeService extends ICrudServiceProxy6<VmNode> {
1189
1251
  syncIndex(): Promise<void>;
1190
1252
  }
1191
1253
  declare class VmNodeServiceProxy extends CrudServiceProxy6<VmNode> implements IVmNodeService {
1192
- constructor(kinotic: IKinotic9);
1254
+ constructor(kinotic: IKinotic10);
1193
1255
  findAvailableNode(requiredCpus: number, requiredMemoryMb: number, requiredDiskMb: number): Promise<VmNode | null>;
1194
1256
  syncIndex(): Promise<void>;
1195
1257
  }
1196
- import { CrudServiceProxy as CrudServiceProxy7, IKinotic as IKinotic10, ICrudServiceProxy as ICrudServiceProxy7, IterablePage as IterablePage3, Page as Page2, Pageable as Pageable3 } from "@kinotic-ai/core";
1258
+ import { CrudServiceProxy as CrudServiceProxy7, IKinotic as IKinotic11, ICrudServiceProxy as ICrudServiceProxy7, IterablePage as IterablePage3, Page as Page2, Pageable as Pageable3 } from "@kinotic-ai/core";
1197
1259
  interface IWorkloadService extends ICrudServiceProxy7<Workload> {
1198
1260
  /**
1199
1261
  * Finds all workloads deployed on the given node.
@@ -1215,13 +1277,13 @@ interface IWorkloadService extends ICrudServiceProxy7<Workload> {
1215
1277
  syncIndex(): Promise<void>;
1216
1278
  }
1217
1279
  declare class WorkloadServiceProxy extends CrudServiceProxy7<Workload> implements IWorkloadService {
1218
- constructor(kinotic: IKinotic10);
1280
+ constructor(kinotic: IKinotic11);
1219
1281
  findAllForNode(nodeId: string, pageable: Pageable3): Promise<IterablePage3<Workload>>;
1220
1282
  findAllForNodeSinglePage(nodeId: string, pageable: Pageable3): Promise<Page2<Workload>>;
1221
1283
  countForNode(nodeId: string): Promise<number>;
1222
1284
  syncIndex(): Promise<void>;
1223
1285
  }
1224
- import { IDataSource, IKinotic as IKinotic11, IterablePage as IterablePage4, Pageable as Pageable4 } from "@kinotic-ai/core";
1286
+ import { IDataSource, IKinotic as IKinotic12, IterablePage as IterablePage4, Pageable as Pageable4 } from "@kinotic-ai/core";
1225
1287
  /**
1226
1288
  * Member management for the caller's organization and its applications. Scope is selected
1227
1289
  * with applicationId — null addresses org members, set addresses that application's
@@ -1261,7 +1323,7 @@ interface IMemberService {
1261
1323
  }
1262
1324
  declare class MemberService implements IMemberService {
1263
1325
  private readonly serviceProxy;
1264
- constructor(kinotic: IKinotic11);
1326
+ constructor(kinotic: IKinotic12);
1265
1327
  findMembers(applicationId: string | null, pageable: Pageable4): Promise<IterablePage4<IamUser>>;
1266
1328
  searchMembers(searchText: string, applicationId: string | null, pageable: Pageable4): Promise<IterablePage4<IamUser>>;
1267
1329
  inviteMember(email: string, displayName: string | null, applicationId: string | null): Promise<PendingInviteSummary>;
@@ -1271,7 +1333,7 @@ declare class MemberService implements IMemberService {
1271
1333
  cancelInvite(inviteId: string): Promise<void>;
1272
1334
  memberDataSource(applicationId: string | null): IDataSource<IamUser>;
1273
1335
  }
1274
- import { IKinotic as IKinotic12 } from "@kinotic-ai/core";
1336
+ import { IKinotic as IKinotic13 } from "@kinotic-ai/core";
1275
1337
  import { CrudServiceProxy as CrudServiceProxy8, ICrudServiceProxy as ICrudServiceProxy8 } from "@kinotic-ai/core";
1276
1338
  /**
1277
1339
  * CRUD service for an application's customized invitation email — at most one
@@ -1287,10 +1349,10 @@ interface IInviteEmailTemplateService extends ICrudServiceProxy8<InviteEmailTemp
1287
1349
  findByApplication(applicationId: string): Promise<InviteEmailTemplate | null>;
1288
1350
  }
1289
1351
  declare class InviteEmailTemplateService extends CrudServiceProxy8<InviteEmailTemplate> implements IInviteEmailTemplateService {
1290
- constructor(kinotic: IKinotic12);
1352
+ constructor(kinotic: IKinotic13);
1291
1353
  findByApplication(applicationId: string): Promise<InviteEmailTemplate | null>;
1292
1354
  }
1293
- import { IKinotic as IKinotic13 } from "@kinotic-ai/core";
1355
+ import { IKinotic as IKinotic14 } from "@kinotic-ai/core";
1294
1356
  /**
1295
1357
  * Browser-invoked service for the RFC 8628 device-authorization approve step. The signed-in
1296
1358
  * browser user calls {@link approve} with the user_code shown in their CLI; the gateway
@@ -1305,10 +1367,10 @@ interface IDeviceApprovalService {
1305
1367
  }
1306
1368
  declare class DeviceApprovalService implements IDeviceApprovalService {
1307
1369
  private readonly serviceProxy;
1308
- constructor(kinotic: IKinotic13);
1370
+ constructor(kinotic: IKinotic14);
1309
1371
  approve(userCode: string): Promise<void>;
1310
1372
  }
1311
- import { CrudServiceProxy as CrudServiceProxy9, IKinotic as IKinotic14, ICrudServiceProxy as ICrudServiceProxy9 } from "@kinotic-ai/core";
1373
+ import { CrudServiceProxy as CrudServiceProxy9, IKinotic as IKinotic15, ICrudServiceProxy as ICrudServiceProxy9 } from "@kinotic-ai/core";
1312
1374
  interface IGitHubAppInstallationService extends ICrudServiceProxy9<GitHubAppInstallation> {
1313
1375
  /**
1314
1376
  * Stages a single-use state token bound to the caller's organization plus the
@@ -1335,7 +1397,7 @@ interface IGitHubAppInstallationService extends ICrudServiceProxy9<GitHubAppInst
1335
1397
  findForCurrentOrg(): Promise<GitHubAppInstallation | null>;
1336
1398
  }
1337
1399
  declare class GitHubAppInstallationService extends CrudServiceProxy9<GitHubAppInstallation> implements IGitHubAppInstallationService {
1338
- constructor(kinotic: IKinotic14);
1400
+ constructor(kinotic: IKinotic15);
1339
1401
  startInstall(returnTo: string | null): Promise<string>;
1340
1402
  completeInstall(installationId: number, state: string): Promise<GitHubInstallCompletion>;
1341
1403
  findForCurrentOrg(): Promise<GitHubAppInstallation | null>;
@@ -1361,4 +1423,4 @@ declare const OsApiPlugin: KinoticPlugin<IOsApiExtension>;
1361
1423
  declare module "@kinotic-ai/core" {
1362
1424
  interface KinoticSingleton extends IOsApiExtension {}
1363
1425
  }
1364
- export { isSystemParticipant, isOrganizationParticipant, isApplicationParticipant, WorkloadStatus, WorkloadServiceProxy, Workload, VolumeMount, VmProviderType, VmNodeStatus, VmNodeServiceProxy, VmNode, VersionDecorator, TimeReferenceDecorator, TextDecorator, TenantSelectionC3Type, TenantIdDecorator, SingleLoggerLevelsDescriptor, SignUpRequest, SignUpCompleteRequest, RepositoryConnectionStatus, QueryOptionsC3Type, QueryDecorator, ProjectType, ProjectService, Project, ProgressType, PortProtocol, PortMapping, PendingInviteSummary, ParticipantType, PageableC3Type, PageC3Type, OsApiPlugin, OrganizationService, Organization, NotIndexedDecorator, NestedDecorator, NamedQueriesDefinitionService, NamedQueriesDefinition, MigrationService, MigrationResult, MigrationRequest, MigrationDefinition, MemberService, LoggersDescriptor, LoggerLevelsDescriptor, LogManager, LogLevel, KinoticProjectConfig, KinoticOsCredentialsAuthProvider, InviteEmailTemplateService, InviteEmailTemplate, InsightRequest, InsightProgress, IdDecorator, IamUser, IWorkloadService, IVmNodeService, ISystemParticipant, IProjectService, IOsApiExtension, IOrganizationService, IOrganizationParticipant, INamedQueriesDefinitionService, IMigrationService, IMemberService, ILogManager, IInviteEmailTemplateService, IGitHubAppInstallationService, IEntityDefinitionService, IDeviceApprovalService, IDataInsightsService, IApplicationService, IApplicationParticipant, GroupLoggerLevelsDescriptor, GitHubToken, GitHubRepoToken, GitHubInstallCompletion, GitHubAppInstallationService, GitHubAppInstallation, FlattenedDecorator, EsIndexConfigurationDecorator, EntityDefinitionService, EntityDefinition, EntityDecorator, EntitiesPathConfig, DiscriminatorDecorator, DeviceApprovalService, DataInsightsService, DataInsightsComponent, CompleteOrgRequest, AutoGeneratedIdDecorator, AuthType, ApplicationService, Application };
1426
+ export { isSystemParticipant, isOrganizationParticipant, isApplicationParticipant, WorkloadStatus, WorkloadServiceProxy, Workload, VolumeMount, VmProviderType, VmNodeStatus, VmNodeServiceProxy, VmNode, VersionDecorator, TimeReferenceDecorator, TextDecorator, TenantSelectionC3Type, TenantIdDecorator, SingleLoggerLevelsDescriptor, SignUpRequest, SignUpCompleteRequest, RepositoryConnectionStatus, QueryOptionsC3Type, QueryDecorator, ProjectType, ProjectService, Project, ProgressType, PortProtocol, PortMapping, PendingInviteSummary, ParticipantType, PageableC3Type, PageC3Type, OsApiPlugin, OrganizationService, Organization, NotIndexedDecorator, NestedDecorator, NamedQueriesDefinitionService, NamedQueriesDefinition, MigrationService, MigrationResult, MigrationRequest, MigrationDefinition, MemberService, LoggersDescriptor, LoggerLevelsDescriptor, LogService, LogQuery, LogManager, LogLevel, KinoticProjectConfig, KinoticOsCredentialsAuthProvider, InviteEmailTemplateService, InviteEmailTemplate, InsightRequest, InsightProgress, IdDecorator, IamUser, IWorkloadService, IVmNodeService, ISystemParticipant, IProjectService, IOsApiExtension, IOrganizationService, IOrganizationParticipant, INamedQueriesDefinitionService, IMigrationService, IMemberService, ILogService, ILogManager, IInviteEmailTemplateService, IGitHubAppInstallationService, IEntityDefinitionService, IDeviceApprovalService, IDataInsightsService, IApplicationService, IApplicationParticipant, GroupLoggerLevelsDescriptor, GitHubToken, GitHubRepoToken, GitHubInstallCompletion, GitHubAppInstallationService, GitHubAppInstallation, FlattenedDecorator, EsIndexConfigurationDecorator, EntityDefinitionService, EntityDefinition, EntityDecorator, EntitiesPathConfig, DiscriminatorDecorator, DeviceApprovalService, DataInsightsService, DataInsightsComponent, CompleteOrgRequest, AutoGeneratedIdDecorator, AuthType, ApplicationService, Application };
package/dist/index.d.ts CHANGED
@@ -485,6 +485,16 @@ declare class Workload implements Identifiable6<string> {
485
485
  */
486
486
  description?: string;
487
487
  /**
488
+ * The Organization this workload runs on behalf of, and which may view its logs.
489
+ * Null for platform workloads (SYSTEM scope).
490
+ */
491
+ organizationId: string | null;
492
+ /**
493
+ * The Application this workload runs on behalf of, or null if none.
494
+ * When set, organizationId must also be set.
495
+ */
496
+ applicationId: string | null;
497
+ /**
488
498
  * The VM provider to use for this workload.
489
499
  */
490
500
  providerType: VmProviderType;
@@ -505,6 +515,17 @@ declare class Workload implements Identifiable6<string> {
505
515
  */
506
516
  diskSizeMb: number;
507
517
  /**
518
+ * When true the VM runs detached from the vm-manager process and survives its
519
+ * restarts. Non-detached workloads end when the vm-manager exits.
520
+ */
521
+ detached: boolean;
522
+ /**
523
+ * When true the VM and its disk are discarded when the workload stops, so a
524
+ * stopped workload cannot be restarted. When false the disk is kept and the
525
+ * workload may be restarted in place.
526
+ */
527
+ autoRemove: boolean;
528
+ /**
508
529
  * Current status of the workload.
509
530
  */
510
531
  status: WorkloadStatus;
@@ -525,7 +546,9 @@ declare class Workload implements Identifiable6<string> {
525
546
  */
526
547
  entrypoint: string[];
527
548
  /**
528
- * Overrides the image command (CMD). Empty keeps the image default.
549
+ * Overrides the image command (CMD). Empty keeps the image default, unless
550
+ * entrypoint is declared — then the image CMD is dropped so the entrypoint
551
+ * runs exactly as given.
529
552
  */
530
553
  cmd: string[];
531
554
  /**
@@ -596,6 +619,19 @@ declare class VmNode implements Identifiable7<string> {
596
619
  constructor(id: string, name: string, hostname: string);
597
620
  }
598
621
  /**
622
+ * Parameters for a historical log query: one workload's logs over a time range.
623
+ */
624
+ interface LogQuery {
625
+ /** Id of the workload whose logs to return. */
626
+ workloadId: string;
627
+ /** Start of the time range, epoch milliseconds (inclusive). */
628
+ start: number;
629
+ /** End of the time range, epoch milliseconds (inclusive). */
630
+ end: number;
631
+ /** Maximum number of log entries to return. */
632
+ limit: number;
633
+ }
634
+ /**
599
635
  * Authentication method for an {@link IamUser}.
600
636
  */
601
637
  declare enum AuthType {
@@ -1032,7 +1068,33 @@ declare class LogManager implements ILogManager {
1032
1068
  loggerLevels(nodeId: string, name: string): Promise<LoggerLevelsDescriptor>;
1033
1069
  configureLogLevel(nodeId: string, name: string, level: LogLevel): Promise<void>;
1034
1070
  }
1035
- import { CrudServiceProxy as CrudServiceProxy4, IKinotic as IKinotic5, ICrudServiceProxy as ICrudServiceProxy4, IterablePage as IterablePage2, Page, Pageable as Pageable2 } from "@kinotic-ai/core";
1071
+ import { IKinotic as IKinotic5 } from "@kinotic-ai/core";
1072
+ import { Observable } from "rxjs";
1073
+ /**
1074
+ * Streams and queries the logs of workloads the authenticated participant may view: an
1075
+ * organization participant sees its own organization's workloads, a system participant sees any.
1076
+ * Both methods yield the raw Loki response bytes; the caller parses Loki's wire format.
1077
+ */
1078
+ interface ILogService {
1079
+ /**
1080
+ * Opens a live tail of the given workload's logs. Each emission is a raw Loki tail frame,
1081
+ * and the stream stays open until unsubscribed.
1082
+ * @param workloadId the id of the workload to follow
1083
+ */
1084
+ tail(workloadId: string): Observable<Uint8Array>;
1085
+ /**
1086
+ * Returns a workload's historical logs as the raw Loki query_range response.
1087
+ * @param query the workload, time range, and limit
1088
+ */
1089
+ history(query: LogQuery): Promise<Uint8Array>;
1090
+ }
1091
+ declare class LogService implements ILogService {
1092
+ private readonly serviceProxy;
1093
+ constructor(kinotic: IKinotic5);
1094
+ tail(workloadId: string): Observable<Uint8Array>;
1095
+ history(query: LogQuery): Promise<Uint8Array>;
1096
+ }
1097
+ import { CrudServiceProxy as CrudServiceProxy4, IKinotic as IKinotic6, ICrudServiceProxy as ICrudServiceProxy4, IterablePage as IterablePage2, Page, Pageable as Pageable2 } from "@kinotic-ai/core";
1036
1098
  interface IEntityDefinitionService extends ICrudServiceProxy4<EntityDefinition> {
1037
1099
  /**
1038
1100
  * Counts all entity definitions for the given application.
@@ -1087,7 +1149,7 @@ interface IEntityDefinitionService extends ICrudServiceProxy4<EntityDefinition>
1087
1149
  unPublish(entityDefinitionId: string): Promise<void>;
1088
1150
  }
1089
1151
  declare class EntityDefinitionService extends CrudServiceProxy4<EntityDefinition> implements IEntityDefinitionService {
1090
- constructor(kinotic: IKinotic5);
1152
+ constructor(kinotic: IKinotic6);
1091
1153
  countForApplication(applicationId: string): Promise<number>;
1092
1154
  countForProject(projectId: string): Promise<number>;
1093
1155
  findAllForApplicationSinglePage(applicationId: string, pageable: Pageable2): Promise<Page<EntityDefinition>>;
@@ -1099,7 +1161,7 @@ declare class EntityDefinitionService extends CrudServiceProxy4<EntityDefinition
1099
1161
  unPublish(entityDefinitionId: string): Promise<void>;
1100
1162
  syncIndex(): Promise<void>;
1101
1163
  }
1102
- import { IKinotic as IKinotic6 } from "@kinotic-ai/core";
1164
+ import { IKinotic as IKinotic7 } from "@kinotic-ai/core";
1103
1165
  import { CrudServiceProxy as CrudServiceProxy5, ICrudServiceProxy as ICrudServiceProxy5 } from "@kinotic-ai/core";
1104
1166
  interface INamedQueriesDefinitionService extends ICrudServiceProxy5<NamedQueriesDefinition> {
1105
1167
  /**
@@ -1109,10 +1171,10 @@ interface INamedQueriesDefinitionService extends ICrudServiceProxy5<NamedQueries
1109
1171
  syncIndex(): Promise<void>;
1110
1172
  }
1111
1173
  declare class NamedQueriesDefinitionService extends CrudServiceProxy5<NamedQueriesDefinition> implements INamedQueriesDefinitionService {
1112
- constructor(kinotic: IKinotic6);
1174
+ constructor(kinotic: IKinotic7);
1113
1175
  syncIndex(): Promise<void>;
1114
1176
  }
1115
- import { IKinotic as IKinotic7 } from "@kinotic-ai/core";
1177
+ import { IKinotic as IKinotic8 } from "@kinotic-ai/core";
1116
1178
  /**
1117
1179
  * Service for executing project-specific migrations through the Persistence API.
1118
1180
  * This service allows external clients to apply their own migrations to projects.
@@ -1144,13 +1206,13 @@ interface IMigrationService {
1144
1206
  }
1145
1207
  declare class MigrationService implements IMigrationService {
1146
1208
  private readonly serviceProxy;
1147
- constructor(kinotic: IKinotic7);
1209
+ constructor(kinotic: IKinotic8);
1148
1210
  executeMigrations(migrationRequest: MigrationRequest): Promise<MigrationResult>;
1149
1211
  getLastAppliedMigrationVersion(projectId: string): Promise<number | null>;
1150
1212
  isMigrationApplied(projectId: string, version: string): Promise<boolean>;
1151
1213
  }
1152
- import { IKinotic as IKinotic8 } from "@kinotic-ai/core";
1153
- import { Observable } from "rxjs";
1214
+ import { IKinotic as IKinotic9 } from "@kinotic-ai/core";
1215
+ import { Observable as Observable2 } from "rxjs";
1154
1216
  /**
1155
1217
  * Provides AI-powered data analysis and visualization code generation capabilities.
1156
1218
  * This service analyzes user queries about their structures and generates appropriate
@@ -1164,14 +1226,14 @@ interface IDataInsightsService {
1164
1226
  * @param request the analysis request containing query and context
1165
1227
  * @return Observable that emits progress updates and completes with the final response
1166
1228
  */
1167
- processRequest(request: InsightRequest): Observable<InsightProgress>;
1229
+ processRequest(request: InsightRequest): Observable2<InsightProgress>;
1168
1230
  }
1169
1231
  declare class DataInsightsService implements IDataInsightsService {
1170
1232
  private readonly serviceProxy;
1171
- constructor(kinotic: IKinotic8);
1172
- processRequest(request: InsightRequest): Observable<InsightProgress>;
1233
+ constructor(kinotic: IKinotic9);
1234
+ processRequest(request: InsightRequest): Observable2<InsightProgress>;
1173
1235
  }
1174
- import { IKinotic as IKinotic9 } from "@kinotic-ai/core";
1236
+ import { IKinotic as IKinotic10 } from "@kinotic-ai/core";
1175
1237
  import { CrudServiceProxy as CrudServiceProxy6, ICrudServiceProxy as ICrudServiceProxy6 } from "@kinotic-ai/core";
1176
1238
  interface IVmNodeService extends ICrudServiceProxy6<VmNode> {
1177
1239
  /**
@@ -1189,11 +1251,11 @@ interface IVmNodeService extends ICrudServiceProxy6<VmNode> {
1189
1251
  syncIndex(): Promise<void>;
1190
1252
  }
1191
1253
  declare class VmNodeServiceProxy extends CrudServiceProxy6<VmNode> implements IVmNodeService {
1192
- constructor(kinotic: IKinotic9);
1254
+ constructor(kinotic: IKinotic10);
1193
1255
  findAvailableNode(requiredCpus: number, requiredMemoryMb: number, requiredDiskMb: number): Promise<VmNode | null>;
1194
1256
  syncIndex(): Promise<void>;
1195
1257
  }
1196
- import { CrudServiceProxy as CrudServiceProxy7, IKinotic as IKinotic10, ICrudServiceProxy as ICrudServiceProxy7, IterablePage as IterablePage3, Page as Page2, Pageable as Pageable3 } from "@kinotic-ai/core";
1258
+ import { CrudServiceProxy as CrudServiceProxy7, IKinotic as IKinotic11, ICrudServiceProxy as ICrudServiceProxy7, IterablePage as IterablePage3, Page as Page2, Pageable as Pageable3 } from "@kinotic-ai/core";
1197
1259
  interface IWorkloadService extends ICrudServiceProxy7<Workload> {
1198
1260
  /**
1199
1261
  * Finds all workloads deployed on the given node.
@@ -1215,13 +1277,13 @@ interface IWorkloadService extends ICrudServiceProxy7<Workload> {
1215
1277
  syncIndex(): Promise<void>;
1216
1278
  }
1217
1279
  declare class WorkloadServiceProxy extends CrudServiceProxy7<Workload> implements IWorkloadService {
1218
- constructor(kinotic: IKinotic10);
1280
+ constructor(kinotic: IKinotic11);
1219
1281
  findAllForNode(nodeId: string, pageable: Pageable3): Promise<IterablePage3<Workload>>;
1220
1282
  findAllForNodeSinglePage(nodeId: string, pageable: Pageable3): Promise<Page2<Workload>>;
1221
1283
  countForNode(nodeId: string): Promise<number>;
1222
1284
  syncIndex(): Promise<void>;
1223
1285
  }
1224
- import { IDataSource, IKinotic as IKinotic11, IterablePage as IterablePage4, Pageable as Pageable4 } from "@kinotic-ai/core";
1286
+ import { IDataSource, IKinotic as IKinotic12, IterablePage as IterablePage4, Pageable as Pageable4 } from "@kinotic-ai/core";
1225
1287
  /**
1226
1288
  * Member management for the caller's organization and its applications. Scope is selected
1227
1289
  * with applicationId — null addresses org members, set addresses that application's
@@ -1261,7 +1323,7 @@ interface IMemberService {
1261
1323
  }
1262
1324
  declare class MemberService implements IMemberService {
1263
1325
  private readonly serviceProxy;
1264
- constructor(kinotic: IKinotic11);
1326
+ constructor(kinotic: IKinotic12);
1265
1327
  findMembers(applicationId: string | null, pageable: Pageable4): Promise<IterablePage4<IamUser>>;
1266
1328
  searchMembers(searchText: string, applicationId: string | null, pageable: Pageable4): Promise<IterablePage4<IamUser>>;
1267
1329
  inviteMember(email: string, displayName: string | null, applicationId: string | null): Promise<PendingInviteSummary>;
@@ -1271,7 +1333,7 @@ declare class MemberService implements IMemberService {
1271
1333
  cancelInvite(inviteId: string): Promise<void>;
1272
1334
  memberDataSource(applicationId: string | null): IDataSource<IamUser>;
1273
1335
  }
1274
- import { IKinotic as IKinotic12 } from "@kinotic-ai/core";
1336
+ import { IKinotic as IKinotic13 } from "@kinotic-ai/core";
1275
1337
  import { CrudServiceProxy as CrudServiceProxy8, ICrudServiceProxy as ICrudServiceProxy8 } from "@kinotic-ai/core";
1276
1338
  /**
1277
1339
  * CRUD service for an application's customized invitation email — at most one
@@ -1287,10 +1349,10 @@ interface IInviteEmailTemplateService extends ICrudServiceProxy8<InviteEmailTemp
1287
1349
  findByApplication(applicationId: string): Promise<InviteEmailTemplate | null>;
1288
1350
  }
1289
1351
  declare class InviteEmailTemplateService extends CrudServiceProxy8<InviteEmailTemplate> implements IInviteEmailTemplateService {
1290
- constructor(kinotic: IKinotic12);
1352
+ constructor(kinotic: IKinotic13);
1291
1353
  findByApplication(applicationId: string): Promise<InviteEmailTemplate | null>;
1292
1354
  }
1293
- import { IKinotic as IKinotic13 } from "@kinotic-ai/core";
1355
+ import { IKinotic as IKinotic14 } from "@kinotic-ai/core";
1294
1356
  /**
1295
1357
  * Browser-invoked service for the RFC 8628 device-authorization approve step. The signed-in
1296
1358
  * browser user calls {@link approve} with the user_code shown in their CLI; the gateway
@@ -1305,10 +1367,10 @@ interface IDeviceApprovalService {
1305
1367
  }
1306
1368
  declare class DeviceApprovalService implements IDeviceApprovalService {
1307
1369
  private readonly serviceProxy;
1308
- constructor(kinotic: IKinotic13);
1370
+ constructor(kinotic: IKinotic14);
1309
1371
  approve(userCode: string): Promise<void>;
1310
1372
  }
1311
- import { CrudServiceProxy as CrudServiceProxy9, IKinotic as IKinotic14, ICrudServiceProxy as ICrudServiceProxy9 } from "@kinotic-ai/core";
1373
+ import { CrudServiceProxy as CrudServiceProxy9, IKinotic as IKinotic15, ICrudServiceProxy as ICrudServiceProxy9 } from "@kinotic-ai/core";
1312
1374
  interface IGitHubAppInstallationService extends ICrudServiceProxy9<GitHubAppInstallation> {
1313
1375
  /**
1314
1376
  * Stages a single-use state token bound to the caller's organization plus the
@@ -1335,7 +1397,7 @@ interface IGitHubAppInstallationService extends ICrudServiceProxy9<GitHubAppInst
1335
1397
  findForCurrentOrg(): Promise<GitHubAppInstallation | null>;
1336
1398
  }
1337
1399
  declare class GitHubAppInstallationService extends CrudServiceProxy9<GitHubAppInstallation> implements IGitHubAppInstallationService {
1338
- constructor(kinotic: IKinotic14);
1400
+ constructor(kinotic: IKinotic15);
1339
1401
  startInstall(returnTo: string | null): Promise<string>;
1340
1402
  completeInstall(installationId: number, state: string): Promise<GitHubInstallCompletion>;
1341
1403
  findForCurrentOrg(): Promise<GitHubAppInstallation | null>;
@@ -1361,4 +1423,4 @@ declare const OsApiPlugin: KinoticPlugin<IOsApiExtension>;
1361
1423
  declare module "@kinotic-ai/core" {
1362
1424
  interface KinoticSingleton extends IOsApiExtension {}
1363
1425
  }
1364
- export { isSystemParticipant, isOrganizationParticipant, isApplicationParticipant, WorkloadStatus, WorkloadServiceProxy, Workload, VolumeMount, VmProviderType, VmNodeStatus, VmNodeServiceProxy, VmNode, VersionDecorator, TimeReferenceDecorator, TextDecorator, TenantSelectionC3Type, TenantIdDecorator, SingleLoggerLevelsDescriptor, SignUpRequest, SignUpCompleteRequest, RepositoryConnectionStatus, QueryOptionsC3Type, QueryDecorator, ProjectType, ProjectService, Project, ProgressType, PortProtocol, PortMapping, PendingInviteSummary, ParticipantType, PageableC3Type, PageC3Type, OsApiPlugin, OrganizationService, Organization, NotIndexedDecorator, NestedDecorator, NamedQueriesDefinitionService, NamedQueriesDefinition, MigrationService, MigrationResult, MigrationRequest, MigrationDefinition, MemberService, LoggersDescriptor, LoggerLevelsDescriptor, LogManager, LogLevel, KinoticProjectConfig, KinoticOsCredentialsAuthProvider, InviteEmailTemplateService, InviteEmailTemplate, InsightRequest, InsightProgress, IdDecorator, IamUser, IWorkloadService, IVmNodeService, ISystemParticipant, IProjectService, IOsApiExtension, IOrganizationService, IOrganizationParticipant, INamedQueriesDefinitionService, IMigrationService, IMemberService, ILogManager, IInviteEmailTemplateService, IGitHubAppInstallationService, IEntityDefinitionService, IDeviceApprovalService, IDataInsightsService, IApplicationService, IApplicationParticipant, GroupLoggerLevelsDescriptor, GitHubToken, GitHubRepoToken, GitHubInstallCompletion, GitHubAppInstallationService, GitHubAppInstallation, FlattenedDecorator, EsIndexConfigurationDecorator, EntityDefinitionService, EntityDefinition, EntityDecorator, EntitiesPathConfig, DiscriminatorDecorator, DeviceApprovalService, DataInsightsService, DataInsightsComponent, CompleteOrgRequest, AutoGeneratedIdDecorator, AuthType, ApplicationService, Application };
1426
+ export { isSystemParticipant, isOrganizationParticipant, isApplicationParticipant, WorkloadStatus, WorkloadServiceProxy, Workload, VolumeMount, VmProviderType, VmNodeStatus, VmNodeServiceProxy, VmNode, VersionDecorator, TimeReferenceDecorator, TextDecorator, TenantSelectionC3Type, TenantIdDecorator, SingleLoggerLevelsDescriptor, SignUpRequest, SignUpCompleteRequest, RepositoryConnectionStatus, QueryOptionsC3Type, QueryDecorator, ProjectType, ProjectService, Project, ProgressType, PortProtocol, PortMapping, PendingInviteSummary, ParticipantType, PageableC3Type, PageC3Type, OsApiPlugin, OrganizationService, Organization, NotIndexedDecorator, NestedDecorator, NamedQueriesDefinitionService, NamedQueriesDefinition, MigrationService, MigrationResult, MigrationRequest, MigrationDefinition, MemberService, LoggersDescriptor, LoggerLevelsDescriptor, LogService, LogQuery, LogManager, LogLevel, KinoticProjectConfig, KinoticOsCredentialsAuthProvider, InviteEmailTemplateService, InviteEmailTemplate, InsightRequest, InsightProgress, IdDecorator, IamUser, IWorkloadService, IVmNodeService, ISystemParticipant, IProjectService, IOsApiExtension, IOrganizationService, IOrganizationParticipant, INamedQueriesDefinitionService, IMigrationService, IMemberService, ILogService, ILogManager, IInviteEmailTemplateService, IGitHubAppInstallationService, IEntityDefinitionService, IDeviceApprovalService, IDataInsightsService, IApplicationService, IApplicationParticipant, GroupLoggerLevelsDescriptor, GitHubToken, GitHubRepoToken, GitHubInstallCompletion, GitHubAppInstallationService, GitHubAppInstallation, FlattenedDecorator, EsIndexConfigurationDecorator, EntityDefinitionService, EntityDefinition, EntityDecorator, EntitiesPathConfig, DiscriminatorDecorator, DeviceApprovalService, DataInsightsService, DataInsightsComponent, CompleteOrgRequest, AutoGeneratedIdDecorator, AuthType, ApplicationService, Application };
package/dist/index.js CHANGED
@@ -302,11 +302,15 @@ class Workload {
302
302
  id = null;
303
303
  name;
304
304
  description;
305
+ organizationId = null;
306
+ applicationId = null;
305
307
  providerType = "BOXLITE" /* BOXLITE */;
306
308
  image;
307
309
  vcpus = 1;
308
310
  memoryMb = 512;
309
311
  diskSizeMb = 1024;
312
+ detached = true;
313
+ autoRemove = false;
310
314
  status = "PENDING" /* PENDING */;
311
315
  environment = {};
312
316
  portMappings = [];
@@ -574,6 +578,19 @@ class LogManager {
574
578
  return this.serviceProxy.invoke("configureLogLevel", [name, level], nodeId);
575
579
  }
576
580
  }
581
+ // packages/os-api/src/api/services/ILogService.ts
582
+ class LogService {
583
+ serviceProxy;
584
+ constructor(kinotic) {
585
+ this.serviceProxy = kinotic.serviceProxy("org.kinotic.os.api.services.LogService");
586
+ }
587
+ tail(workloadId) {
588
+ return this.serviceProxy.invokeStream("tail", [workloadId]);
589
+ }
590
+ history(query) {
591
+ return this.serviceProxy.invoke("history", [query]);
592
+ }
593
+ }
577
594
  // packages/os-api/src/api/services/IEntityDefinitionService.ts
578
595
  import { CrudServiceProxy as CrudServiceProxy4, FunctionalIterablePage as FunctionalIterablePage2 } from "@kinotic-ai/core";
579
596
 
@@ -826,6 +843,7 @@ export {
826
843
  MemberService,
827
844
  LoggersDescriptor,
828
845
  LoggerLevelsDescriptor,
846
+ LogService,
829
847
  LogManager,
830
848
  LogLevel,
831
849
  KinoticProjectConfig,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kinotic-ai/os-api",
3
- "version": "1.14.1",
3
+ "version": "2.0.0",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"
@@ -32,15 +32,15 @@
32
32
  "coverage": "bun test --coverage --pass-with-no-tests"
33
33
  },
34
34
  "peerDependencies": {
35
- "@kinotic-ai/core": ">=1.9.0"
35
+ "@kinotic-ai/core": ">=2.0.0"
36
36
  },
37
37
  "dependencies": {
38
- "@kinotic-ai/idl": "1.0.9",
39
- "@kinotic-ai/persistence": "1.5.1",
38
+ "@kinotic-ai/idl": "1.0.10",
39
+ "@kinotic-ai/persistence": "2.0.0",
40
40
  "rxjs": "^7.8.2"
41
41
  },
42
42
  "devDependencies": {
43
- "@kinotic-ai/core": "1.9.0",
43
+ "@kinotic-ai/core": "2.0.0",
44
44
  "@types/node": "^25.3.2",
45
45
  "tslib": "^2.8.1",
46
46
  "typescript": "^5.9.3"