@tinycloud/operations 0.6.0-beta.1 → 0.6.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.
@@ -3566,6 +3566,1353 @@
3566
3566
  "dynamic": true
3567
3567
  }
3568
3568
  },
3569
+ {
3570
+ "id": "tinycloud.apps.query",
3571
+ "version": 1,
3572
+ "title": "Query personal records",
3573
+ "description": "Answer questions over many personal records using a fast, searchable copy. List every app and kind covered; the server checks and rebuilds their copy before running one SELECT or WITH query with bound params. COPY_PARTIAL means retry with the remaining kinds before answering.",
3574
+ "input": {
3575
+ "type": "object",
3576
+ "properties": {
3577
+ "kinds": {
3578
+ "type": "array",
3579
+ "items": {
3580
+ "type": "object",
3581
+ "properties": {
3582
+ "app": {
3583
+ "type": "string",
3584
+ "pattern": "^[a-z0-9-]+$"
3585
+ },
3586
+ "kind": {
3587
+ "type": "string",
3588
+ "pattern": "^[a-z0-9-]+$"
3589
+ }
3590
+ },
3591
+ "required": [
3592
+ "app",
3593
+ "kind"
3594
+ ],
3595
+ "additionalProperties": false
3596
+ },
3597
+ "minItems": 1
3598
+ },
3599
+ "sql": {
3600
+ "type": "string",
3601
+ "minLength": 1,
3602
+ "maxLength": 65536
3603
+ },
3604
+ "params": {
3605
+ "type": "array",
3606
+ "items": {
3607
+ "anyOf": [
3608
+ {
3609
+ "type": "null"
3610
+ },
3611
+ {
3612
+ "type": "number"
3613
+ },
3614
+ {
3615
+ "type": "string",
3616
+ "maxLength": 4194304
3617
+ },
3618
+ {
3619
+ "type": "object",
3620
+ "properties": {
3621
+ "type": {
3622
+ "type": "string",
3623
+ "const": "blob"
3624
+ },
3625
+ "base64": {
3626
+ "type": "string",
3627
+ "maxLength": 5592408
3628
+ }
3629
+ },
3630
+ "required": [
3631
+ "type",
3632
+ "base64"
3633
+ ],
3634
+ "additionalProperties": false
3635
+ }
3636
+ ]
3637
+ },
3638
+ "maxItems": 100
3639
+ }
3640
+ },
3641
+ "required": [
3642
+ "kinds",
3643
+ "sql"
3644
+ ],
3645
+ "additionalProperties": false,
3646
+ "$schema": "http://json-schema.org/draft-07/schema#"
3647
+ },
3648
+ "output": {
3649
+ "anyOf": [
3650
+ {
3651
+ "type": "object",
3652
+ "properties": {
3653
+ "kinds": {
3654
+ "type": "array",
3655
+ "items": {
3656
+ "type": "object",
3657
+ "properties": {
3658
+ "app": {
3659
+ "type": "string",
3660
+ "pattern": "^[a-z0-9-]+$"
3661
+ },
3662
+ "kind": {
3663
+ "type": "string",
3664
+ "pattern": "^[a-z0-9-]+$"
3665
+ },
3666
+ "records": {
3667
+ "type": "integer",
3668
+ "minimum": 0
3669
+ }
3670
+ },
3671
+ "required": [
3672
+ "app",
3673
+ "kind",
3674
+ "records"
3675
+ ],
3676
+ "additionalProperties": false
3677
+ }
3678
+ },
3679
+ "columns": {
3680
+ "type": "array",
3681
+ "items": {
3682
+ "type": "string"
3683
+ }
3684
+ },
3685
+ "rows": {
3686
+ "type": "array",
3687
+ "items": {
3688
+ "type": "array",
3689
+ "items": {
3690
+ "anyOf": [
3691
+ {
3692
+ "type": "null"
3693
+ },
3694
+ {
3695
+ "type": "number"
3696
+ },
3697
+ {
3698
+ "type": "string"
3699
+ },
3700
+ {
3701
+ "type": "object",
3702
+ "properties": {
3703
+ "type": {
3704
+ "type": "string",
3705
+ "const": "blob"
3706
+ },
3707
+ "base64": {
3708
+ "type": "string"
3709
+ },
3710
+ "byteLength": {
3711
+ "type": "integer",
3712
+ "minimum": 0
3713
+ }
3714
+ },
3715
+ "required": [
3716
+ "type",
3717
+ "base64",
3718
+ "byteLength"
3719
+ ],
3720
+ "additionalProperties": false
3721
+ }
3722
+ ]
3723
+ }
3724
+ }
3725
+ },
3726
+ "rowCount": {
3727
+ "type": "integer",
3728
+ "minimum": 0
3729
+ }
3730
+ },
3731
+ "required": [
3732
+ "kinds",
3733
+ "columns",
3734
+ "rows",
3735
+ "rowCount"
3736
+ ],
3737
+ "additionalProperties": false
3738
+ },
3739
+ {
3740
+ "type": "object",
3741
+ "properties": {
3742
+ "outcome": {
3743
+ "type": "string",
3744
+ "const": "COPY_PARTIAL"
3745
+ },
3746
+ "remaining": {
3747
+ "type": "array",
3748
+ "items": {
3749
+ "type": "object",
3750
+ "properties": {
3751
+ "app": {
3752
+ "$ref": "#/anyOf/0/properties/kinds/items/properties/app"
3753
+ },
3754
+ "kind": {
3755
+ "$ref": "#/anyOf/0/properties/kinds/items/properties/kind"
3756
+ }
3757
+ },
3758
+ "required": [
3759
+ "app",
3760
+ "kind"
3761
+ ],
3762
+ "additionalProperties": false
3763
+ }
3764
+ }
3765
+ },
3766
+ "required": [
3767
+ "outcome",
3768
+ "remaining"
3769
+ ],
3770
+ "additionalProperties": false
3771
+ }
3772
+ ],
3773
+ "$schema": "http://json-schema.org/draft-07/schema#"
3774
+ },
3775
+ "result": {
3776
+ "$schema": "http://json-schema.org/draft-07/schema#",
3777
+ "type": "object",
3778
+ "anyOf": [
3779
+ {
3780
+ "type": "object",
3781
+ "properties": {
3782
+ "status": {
3783
+ "const": "ok"
3784
+ },
3785
+ "operation": {
3786
+ "type": "object",
3787
+ "properties": {
3788
+ "operationId": {
3789
+ "type": "string",
3790
+ "const": "tinycloud.apps.query"
3791
+ },
3792
+ "operationVersion": {
3793
+ "type": "integer",
3794
+ "const": 1
3795
+ }
3796
+ },
3797
+ "required": [
3798
+ "operationId",
3799
+ "operationVersion"
3800
+ ],
3801
+ "additionalProperties": false
3802
+ },
3803
+ "context": {
3804
+ "type": "object",
3805
+ "properties": {
3806
+ "profile": {
3807
+ "type": "string",
3808
+ "minLength": 1
3809
+ },
3810
+ "host": {
3811
+ "type": "string",
3812
+ "minLength": 1
3813
+ },
3814
+ "posture": {
3815
+ "type": "string",
3816
+ "enum": [
3817
+ "owner-openkey",
3818
+ "delegate-session",
3819
+ "local-owner-key",
3820
+ "unauthenticated"
3821
+ ]
3822
+ },
3823
+ "operatorType": {
3824
+ "type": "string",
3825
+ "enum": [
3826
+ "human",
3827
+ "agent"
3828
+ ]
3829
+ },
3830
+ "principalDid": {
3831
+ "type": "string",
3832
+ "minLength": 1
3833
+ },
3834
+ "sessionDid": {
3835
+ "type": "string",
3836
+ "minLength": 1
3837
+ },
3838
+ "ownerDid": {
3839
+ "type": "string",
3840
+ "minLength": 1
3841
+ },
3842
+ "space": {
3843
+ "type": "string",
3844
+ "minLength": 1
3845
+ }
3846
+ },
3847
+ "required": [
3848
+ "profile",
3849
+ "host",
3850
+ "posture"
3851
+ ],
3852
+ "additionalProperties": false
3853
+ },
3854
+ "warnings": {
3855
+ "type": "array",
3856
+ "minItems": 1,
3857
+ "items": {
3858
+ "type": "object",
3859
+ "properties": {
3860
+ "code": {
3861
+ "const": "STORED_GRANT_SKIPPED"
3862
+ },
3863
+ "reason": {
3864
+ "type": "string",
3865
+ "enum": [
3866
+ "malformed",
3867
+ "unbound",
3868
+ "outside_request",
3869
+ "host_mismatch",
3870
+ "expired",
3871
+ "cid_mismatch",
3872
+ "authority_invalid",
3873
+ "proof_missing",
3874
+ "proof_invalid",
3875
+ "owner_mismatch",
3876
+ "audience_mismatch",
3877
+ "resources_mismatch",
3878
+ "unsupported",
3879
+ "activation_rejected",
3880
+ "activation_unavailable",
3881
+ "activation_unauthenticated",
3882
+ "invalid"
3883
+ ]
3884
+ },
3885
+ "grantCid": {
3886
+ "type": "string",
3887
+ "pattern": "^bafkr4i[a-z2-7]{52}$"
3888
+ }
3889
+ },
3890
+ "required": [
3891
+ "code",
3892
+ "reason"
3893
+ ],
3894
+ "additionalProperties": false
3895
+ }
3896
+ },
3897
+ "output": {
3898
+ "$ref": "#/$defs/output"
3899
+ }
3900
+ },
3901
+ "required": [
3902
+ "status",
3903
+ "operation",
3904
+ "context",
3905
+ "output"
3906
+ ],
3907
+ "additionalProperties": false
3908
+ },
3909
+ {
3910
+ "type": "object",
3911
+ "properties": {
3912
+ "status": {
3913
+ "const": "authority_required"
3914
+ },
3915
+ "operation": {
3916
+ "type": "object",
3917
+ "properties": {
3918
+ "operationId": {
3919
+ "type": "string",
3920
+ "const": "tinycloud.apps.query"
3921
+ },
3922
+ "operationVersion": {
3923
+ "type": "integer",
3924
+ "const": 1
3925
+ }
3926
+ },
3927
+ "required": [
3928
+ "operationId",
3929
+ "operationVersion"
3930
+ ],
3931
+ "additionalProperties": false
3932
+ },
3933
+ "context": {
3934
+ "type": "object",
3935
+ "properties": {
3936
+ "profile": {
3937
+ "type": "string",
3938
+ "minLength": 1
3939
+ },
3940
+ "host": {
3941
+ "type": "string",
3942
+ "minLength": 1
3943
+ },
3944
+ "posture": {
3945
+ "type": "string",
3946
+ "enum": [
3947
+ "owner-openkey",
3948
+ "delegate-session",
3949
+ "local-owner-key",
3950
+ "unauthenticated"
3951
+ ]
3952
+ },
3953
+ "operatorType": {
3954
+ "type": "string",
3955
+ "enum": [
3956
+ "human",
3957
+ "agent"
3958
+ ]
3959
+ },
3960
+ "principalDid": {
3961
+ "type": "string",
3962
+ "minLength": 1
3963
+ },
3964
+ "sessionDid": {
3965
+ "type": "string",
3966
+ "minLength": 1
3967
+ },
3968
+ "ownerDid": {
3969
+ "type": "string",
3970
+ "minLength": 1
3971
+ },
3972
+ "space": {
3973
+ "type": "string",
3974
+ "minLength": 1
3975
+ }
3976
+ },
3977
+ "required": [
3978
+ "profile",
3979
+ "host",
3980
+ "posture"
3981
+ ],
3982
+ "additionalProperties": false
3983
+ },
3984
+ "warnings": {
3985
+ "type": "array",
3986
+ "minItems": 1,
3987
+ "items": {
3988
+ "type": "object",
3989
+ "properties": {
3990
+ "code": {
3991
+ "const": "STORED_GRANT_SKIPPED"
3992
+ },
3993
+ "reason": {
3994
+ "type": "string",
3995
+ "enum": [
3996
+ "malformed",
3997
+ "unbound",
3998
+ "outside_request",
3999
+ "host_mismatch",
4000
+ "expired",
4001
+ "cid_mismatch",
4002
+ "authority_invalid",
4003
+ "proof_missing",
4004
+ "proof_invalid",
4005
+ "owner_mismatch",
4006
+ "audience_mismatch",
4007
+ "resources_mismatch",
4008
+ "unsupported",
4009
+ "activation_rejected",
4010
+ "activation_unavailable",
4011
+ "activation_unauthenticated",
4012
+ "invalid"
4013
+ ]
4014
+ },
4015
+ "grantCid": {
4016
+ "type": "string",
4017
+ "pattern": "^bafkr4i[a-z2-7]{52}$"
4018
+ }
4019
+ },
4020
+ "required": [
4021
+ "code",
4022
+ "reason"
4023
+ ],
4024
+ "additionalProperties": false
4025
+ }
4026
+ },
4027
+ "missing": {
4028
+ "type": "array",
4029
+ "minItems": 1,
4030
+ "items": {
4031
+ "$ref": "#/$defs/permissionEntry"
4032
+ }
4033
+ },
4034
+ "request": {
4035
+ "$ref": "#/$defs/permissionRequest"
4036
+ },
4037
+ "approval": {
4038
+ "type": "object",
4039
+ "properties": {
4040
+ "kind": {
4041
+ "const": "openkey"
4042
+ },
4043
+ "requestId": {
4044
+ "type": "string",
4045
+ "minLength": 1
4046
+ },
4047
+ "url": {
4048
+ "type": "string",
4049
+ "format": "uri"
4050
+ },
4051
+ "fallback": {
4052
+ "type": "string",
4053
+ "minLength": 1
4054
+ }
4055
+ },
4056
+ "required": [
4057
+ "kind",
4058
+ "requestId",
4059
+ "fallback"
4060
+ ],
4061
+ "additionalProperties": false
4062
+ },
4063
+ "retry": {
4064
+ "type": "object",
4065
+ "properties": {
4066
+ "operationId": {
4067
+ "type": "string",
4068
+ "minLength": 1
4069
+ },
4070
+ "operationVersion": {
4071
+ "type": "integer",
4072
+ "const": 1
4073
+ },
4074
+ "inputDigest": {
4075
+ "type": "string",
4076
+ "pattern": "^[a-f0-9]{64}$"
4077
+ },
4078
+ "safeInput": {
4079
+ "type": "object",
4080
+ "additionalProperties": true
4081
+ },
4082
+ "requiresCallerInput": {
4083
+ "type": "boolean"
4084
+ }
4085
+ },
4086
+ "required": [
4087
+ "operationId",
4088
+ "operationVersion",
4089
+ "inputDigest",
4090
+ "requiresCallerInput"
4091
+ ],
4092
+ "additionalProperties": false
4093
+ }
4094
+ },
4095
+ "required": [
4096
+ "status",
4097
+ "operation",
4098
+ "context",
4099
+ "missing",
4100
+ "request",
4101
+ "approval",
4102
+ "retry"
4103
+ ],
4104
+ "additionalProperties": false
4105
+ },
4106
+ {
4107
+ "type": "object",
4108
+ "properties": {
4109
+ "status": {
4110
+ "const": "setup_required"
4111
+ },
4112
+ "operation": {
4113
+ "type": "object",
4114
+ "properties": {
4115
+ "operationId": {
4116
+ "type": "string",
4117
+ "const": "tinycloud.apps.query"
4118
+ },
4119
+ "operationVersion": {
4120
+ "type": "integer",
4121
+ "const": 1
4122
+ }
4123
+ },
4124
+ "required": [
4125
+ "operationId",
4126
+ "operationVersion"
4127
+ ],
4128
+ "additionalProperties": false
4129
+ },
4130
+ "context": {
4131
+ "type": "object",
4132
+ "properties": {
4133
+ "profile": {
4134
+ "type": "string",
4135
+ "minLength": 1
4136
+ },
4137
+ "host": {
4138
+ "type": "string",
4139
+ "minLength": 1
4140
+ },
4141
+ "posture": {
4142
+ "type": "string",
4143
+ "enum": [
4144
+ "owner-openkey",
4145
+ "delegate-session",
4146
+ "local-owner-key",
4147
+ "unauthenticated"
4148
+ ]
4149
+ },
4150
+ "operatorType": {
4151
+ "type": "string",
4152
+ "enum": [
4153
+ "human",
4154
+ "agent"
4155
+ ]
4156
+ },
4157
+ "principalDid": {
4158
+ "type": "string",
4159
+ "minLength": 1
4160
+ },
4161
+ "sessionDid": {
4162
+ "type": "string",
4163
+ "minLength": 1
4164
+ },
4165
+ "ownerDid": {
4166
+ "type": "string",
4167
+ "minLength": 1
4168
+ },
4169
+ "space": {
4170
+ "type": "string",
4171
+ "minLength": 1
4172
+ }
4173
+ },
4174
+ "required": [
4175
+ "profile",
4176
+ "host",
4177
+ "posture"
4178
+ ],
4179
+ "additionalProperties": false
4180
+ },
4181
+ "warnings": {
4182
+ "type": "array",
4183
+ "minItems": 1,
4184
+ "items": {
4185
+ "type": "object",
4186
+ "properties": {
4187
+ "code": {
4188
+ "const": "STORED_GRANT_SKIPPED"
4189
+ },
4190
+ "reason": {
4191
+ "type": "string",
4192
+ "enum": [
4193
+ "malformed",
4194
+ "unbound",
4195
+ "outside_request",
4196
+ "host_mismatch",
4197
+ "expired",
4198
+ "cid_mismatch",
4199
+ "authority_invalid",
4200
+ "proof_missing",
4201
+ "proof_invalid",
4202
+ "owner_mismatch",
4203
+ "audience_mismatch",
4204
+ "resources_mismatch",
4205
+ "unsupported",
4206
+ "activation_rejected",
4207
+ "activation_unavailable",
4208
+ "activation_unauthenticated",
4209
+ "invalid"
4210
+ ]
4211
+ },
4212
+ "grantCid": {
4213
+ "type": "string",
4214
+ "pattern": "^bafkr4i[a-z2-7]{52}$"
4215
+ }
4216
+ },
4217
+ "required": [
4218
+ "code",
4219
+ "reason"
4220
+ ],
4221
+ "additionalProperties": false
4222
+ }
4223
+ },
4224
+ "setup": {
4225
+ "type": "object",
4226
+ "properties": {
4227
+ "kind": {
4228
+ "const": "secret_manager"
4229
+ },
4230
+ "action": {
4231
+ "const": "add_secret"
4232
+ },
4233
+ "url": {
4234
+ "type": "string",
4235
+ "format": "uri"
4236
+ },
4237
+ "names": {
4238
+ "type": "array",
4239
+ "minItems": 1,
4240
+ "maxItems": 10,
4241
+ "items": {
4242
+ "type": "string",
4243
+ "minLength": 1
4244
+ }
4245
+ },
4246
+ "scope": {
4247
+ "type": "string",
4248
+ "minLength": 1
4249
+ },
4250
+ "owner": {
4251
+ "type": "string",
4252
+ "minLength": 1
4253
+ },
4254
+ "secret": {
4255
+ "type": "object",
4256
+ "properties": {
4257
+ "name": {
4258
+ "type": "string",
4259
+ "minLength": 1
4260
+ },
4261
+ "scope": {
4262
+ "type": "string",
4263
+ "minLength": 1
4264
+ },
4265
+ "space": {
4266
+ "type": "string",
4267
+ "minLength": 1
4268
+ }
4269
+ },
4270
+ "required": [
4271
+ "name",
4272
+ "space"
4273
+ ],
4274
+ "additionalProperties": false
4275
+ },
4276
+ "message": {
4277
+ "type": "string",
4278
+ "minLength": 1
4279
+ }
4280
+ },
4281
+ "required": [
4282
+ "kind",
4283
+ "action",
4284
+ "url",
4285
+ "names",
4286
+ "owner",
4287
+ "secret",
4288
+ "message"
4289
+ ],
4290
+ "additionalProperties": false
4291
+ },
4292
+ "retry": {
4293
+ "type": "object",
4294
+ "properties": {
4295
+ "operationId": {
4296
+ "type": "string",
4297
+ "minLength": 1
4298
+ },
4299
+ "operationVersion": {
4300
+ "type": "integer",
4301
+ "const": 1
4302
+ },
4303
+ "inputDigest": {
4304
+ "type": "string",
4305
+ "pattern": "^[a-f0-9]{64}$"
4306
+ },
4307
+ "safeInput": {
4308
+ "type": "object",
4309
+ "additionalProperties": true
4310
+ },
4311
+ "requiresCallerInput": {
4312
+ "type": "boolean"
4313
+ }
4314
+ },
4315
+ "required": [
4316
+ "operationId",
4317
+ "operationVersion",
4318
+ "inputDigest",
4319
+ "requiresCallerInput"
4320
+ ],
4321
+ "additionalProperties": false
4322
+ }
4323
+ },
4324
+ "required": [
4325
+ "status",
4326
+ "operation",
4327
+ "context",
4328
+ "setup",
4329
+ "retry"
4330
+ ],
4331
+ "additionalProperties": false
4332
+ },
4333
+ {
4334
+ "type": "object",
4335
+ "properties": {
4336
+ "status": {
4337
+ "const": "error"
4338
+ },
4339
+ "operation": {
4340
+ "type": "object",
4341
+ "properties": {
4342
+ "operationId": {
4343
+ "type": "string",
4344
+ "const": "tinycloud.apps.query"
4345
+ },
4346
+ "operationVersion": {
4347
+ "type": "integer",
4348
+ "const": 1
4349
+ }
4350
+ },
4351
+ "required": [
4352
+ "operationId",
4353
+ "operationVersion"
4354
+ ],
4355
+ "additionalProperties": false
4356
+ },
4357
+ "context": {
4358
+ "type": "object",
4359
+ "properties": {
4360
+ "profile": {
4361
+ "type": "string",
4362
+ "minLength": 1
4363
+ },
4364
+ "host": {
4365
+ "type": "string",
4366
+ "minLength": 1
4367
+ },
4368
+ "posture": {
4369
+ "type": "string",
4370
+ "enum": [
4371
+ "owner-openkey",
4372
+ "delegate-session",
4373
+ "local-owner-key",
4374
+ "unauthenticated"
4375
+ ]
4376
+ },
4377
+ "operatorType": {
4378
+ "type": "string",
4379
+ "enum": [
4380
+ "human",
4381
+ "agent"
4382
+ ]
4383
+ },
4384
+ "principalDid": {
4385
+ "type": "string",
4386
+ "minLength": 1
4387
+ },
4388
+ "sessionDid": {
4389
+ "type": "string",
4390
+ "minLength": 1
4391
+ },
4392
+ "ownerDid": {
4393
+ "type": "string",
4394
+ "minLength": 1
4395
+ },
4396
+ "space": {
4397
+ "type": "string",
4398
+ "minLength": 1
4399
+ }
4400
+ },
4401
+ "required": [
4402
+ "profile",
4403
+ "host",
4404
+ "posture"
4405
+ ],
4406
+ "additionalProperties": false
4407
+ },
4408
+ "warnings": {
4409
+ "type": "array",
4410
+ "minItems": 1,
4411
+ "items": {
4412
+ "type": "object",
4413
+ "properties": {
4414
+ "code": {
4415
+ "const": "STORED_GRANT_SKIPPED"
4416
+ },
4417
+ "reason": {
4418
+ "type": "string",
4419
+ "enum": [
4420
+ "malformed",
4421
+ "unbound",
4422
+ "outside_request",
4423
+ "host_mismatch",
4424
+ "expired",
4425
+ "cid_mismatch",
4426
+ "authority_invalid",
4427
+ "proof_missing",
4428
+ "proof_invalid",
4429
+ "owner_mismatch",
4430
+ "audience_mismatch",
4431
+ "resources_mismatch",
4432
+ "unsupported",
4433
+ "activation_rejected",
4434
+ "activation_unavailable",
4435
+ "activation_unauthenticated",
4436
+ "invalid"
4437
+ ]
4438
+ },
4439
+ "grantCid": {
4440
+ "type": "string",
4441
+ "pattern": "^bafkr4i[a-z2-7]{52}$"
4442
+ }
4443
+ },
4444
+ "required": [
4445
+ "code",
4446
+ "reason"
4447
+ ],
4448
+ "additionalProperties": false
4449
+ }
4450
+ },
4451
+ "error": {
4452
+ "type": "object",
4453
+ "properties": {
4454
+ "code": {
4455
+ "type": "string",
4456
+ "enum": [
4457
+ "INPUT_INVALID",
4458
+ "OPERATION_NOT_FOUND",
4459
+ "OPERATION_VERSION_UNSUPPORTED",
4460
+ "PROFILE_NOT_FOUND",
4461
+ "PROFILE_POSTURE_NOT_ALLOWED",
4462
+ "PROFILE_OWNER_OPT_IN_REQUIRED",
4463
+ "PROFILE_MIGRATION_REQUIRED",
4464
+ "AUTH_REQUIRED",
4465
+ "PERMISSION_DENIED",
4466
+ "SESSION_NOT_FOUND",
4467
+ "PERMISSION_HINT_INVALID",
4468
+ "DELEGATION_ARTIFACT_INVALID",
4469
+ "DELEGATION_EXPIRED",
4470
+ "DELEGATION_AUDIENCE_MISMATCH",
4471
+ "DELEGATION_HOST_MISMATCH",
4472
+ "DELEGATION_REJECTED",
4473
+ "ENCRYPTION_NETWORK_UNRESOLVED",
4474
+ "NODE_UNREACHABLE",
4475
+ "NODE_ERROR",
4476
+ "STORAGE_QUOTA_EXCEEDED",
4477
+ "KV_NOT_FOUND",
4478
+ "KV_PRECONDITION_FAILED",
4479
+ "KV_CONFLICT",
4480
+ "KV_RESPONSE_TOO_LARGE",
4481
+ "SQL_QUERY_INVALID",
4482
+ "SQL_EXECUTION_FAILED",
4483
+ "SQL_RESULT_LIMIT_EXCEEDED",
4484
+ "SQL_VALUE_UNSAFE",
4485
+ "SECRET_READ_FAILED",
4486
+ "SECRET_DECRYPT_FAILED",
4487
+ "OUTPUT_INVALID",
4488
+ "INTERNAL_ERROR"
4489
+ ]
4490
+ },
4491
+ "message": {
4492
+ "type": "string",
4493
+ "minLength": 1
4494
+ },
4495
+ "retryable": {
4496
+ "type": "boolean"
4497
+ },
4498
+ "details": {
4499
+ "type": "object",
4500
+ "additionalProperties": true
4501
+ }
4502
+ },
4503
+ "required": [
4504
+ "code",
4505
+ "message",
4506
+ "retryable"
4507
+ ],
4508
+ "additionalProperties": false
4509
+ }
4510
+ },
4511
+ "required": [
4512
+ "status",
4513
+ "operation",
4514
+ "context",
4515
+ "error"
4516
+ ],
4517
+ "additionalProperties": false
4518
+ }
4519
+ ],
4520
+ "$defs": {
4521
+ "permissionEntry": {
4522
+ "type": "object",
4523
+ "properties": {
4524
+ "service": {
4525
+ "type": "string",
4526
+ "minLength": 1
4527
+ },
4528
+ "space": {
4529
+ "type": "string",
4530
+ "minLength": 1
4531
+ },
4532
+ "path": {
4533
+ "type": "string"
4534
+ },
4535
+ "actions": {
4536
+ "type": "array",
4537
+ "items": {
4538
+ "type": "string",
4539
+ "minLength": 1
4540
+ },
4541
+ "minItems": 1
4542
+ },
4543
+ "caveats": {
4544
+ "type": "array",
4545
+ "items": {
4546
+ "type": "object",
4547
+ "additionalProperties": {}
4548
+ }
4549
+ },
4550
+ "skipPrefix": {
4551
+ "type": "boolean"
4552
+ },
4553
+ "expiry": {
4554
+ "type": "string",
4555
+ "minLength": 1
4556
+ },
4557
+ "description": {
4558
+ "type": "string"
4559
+ }
4560
+ },
4561
+ "required": [
4562
+ "service",
4563
+ "path",
4564
+ "actions"
4565
+ ],
4566
+ "additionalProperties": false,
4567
+ "$schema": "http://json-schema.org/draft-07/schema#"
4568
+ },
4569
+ "permissionRequest": {
4570
+ "type": "object",
4571
+ "properties": {
4572
+ "kind": {
4573
+ "type": "string",
4574
+ "const": "tinycloud.auth.request"
4575
+ },
4576
+ "version": {
4577
+ "type": "number",
4578
+ "const": 1
4579
+ },
4580
+ "requestId": {
4581
+ "type": "string",
4582
+ "minLength": 1
4583
+ },
4584
+ "createdAt": {
4585
+ "type": "string",
4586
+ "format": "date-time"
4587
+ },
4588
+ "profile": {
4589
+ "type": "string",
4590
+ "minLength": 1
4591
+ },
4592
+ "posture": {
4593
+ "type": "string",
4594
+ "enum": [
4595
+ "owner-openkey",
4596
+ "delegate-session",
4597
+ "local-owner-key",
4598
+ "unauthenticated"
4599
+ ]
4600
+ },
4601
+ "operatorType": {
4602
+ "type": "string",
4603
+ "enum": [
4604
+ "human",
4605
+ "agent"
4606
+ ]
4607
+ },
4608
+ "host": {
4609
+ "type": "string",
4610
+ "minLength": 1
4611
+ },
4612
+ "sessionDid": {
4613
+ "type": "string",
4614
+ "minLength": 1
4615
+ },
4616
+ "ownerDid": {
4617
+ "type": "string",
4618
+ "minLength": 1
4619
+ },
4620
+ "spaceId": {
4621
+ "type": "string",
4622
+ "minLength": 1
4623
+ },
4624
+ "requestedExpiry": {
4625
+ "anyOf": [
4626
+ {
4627
+ "type": "string",
4628
+ "minLength": 1
4629
+ },
4630
+ {
4631
+ "type": "number"
4632
+ }
4633
+ ]
4634
+ },
4635
+ "requested": {
4636
+ "type": "array",
4637
+ "items": {
4638
+ "type": "object",
4639
+ "properties": {
4640
+ "service": {
4641
+ "type": "string",
4642
+ "minLength": 1
4643
+ },
4644
+ "space": {
4645
+ "type": "string",
4646
+ "minLength": 1
4647
+ },
4648
+ "path": {
4649
+ "type": "string"
4650
+ },
4651
+ "actions": {
4652
+ "type": "array",
4653
+ "items": {
4654
+ "type": "string",
4655
+ "minLength": 1
4656
+ },
4657
+ "minItems": 1
4658
+ },
4659
+ "caveats": {
4660
+ "type": "array",
4661
+ "items": {
4662
+ "type": "object",
4663
+ "additionalProperties": {}
4664
+ }
4665
+ },
4666
+ "skipPrefix": {
4667
+ "type": "boolean"
4668
+ },
4669
+ "expiry": {
4670
+ "type": "string",
4671
+ "minLength": 1
4672
+ },
4673
+ "description": {
4674
+ "type": "string"
4675
+ }
4676
+ },
4677
+ "required": [
4678
+ "service",
4679
+ "path",
4680
+ "actions"
4681
+ ],
4682
+ "additionalProperties": false
4683
+ }
4684
+ },
4685
+ "command": {
4686
+ "type": "object",
4687
+ "properties": {
4688
+ "argv": {
4689
+ "type": "array",
4690
+ "items": {
4691
+ "type": "string"
4692
+ },
4693
+ "minItems": 1
4694
+ },
4695
+ "cwd": {
4696
+ "type": "string",
4697
+ "minLength": 1
4698
+ }
4699
+ },
4700
+ "required": [
4701
+ "argv",
4702
+ "cwd"
4703
+ ],
4704
+ "additionalProperties": false
4705
+ }
4706
+ },
4707
+ "required": [
4708
+ "kind",
4709
+ "version",
4710
+ "requestId",
4711
+ "createdAt",
4712
+ "profile",
4713
+ "posture",
4714
+ "operatorType",
4715
+ "host",
4716
+ "sessionDid",
4717
+ "requested"
4718
+ ],
4719
+ "additionalProperties": false,
4720
+ "$schema": "http://json-schema.org/draft-07/schema#"
4721
+ },
4722
+ "output": {
4723
+ "anyOf": [
4724
+ {
4725
+ "type": "object",
4726
+ "properties": {
4727
+ "kinds": {
4728
+ "type": "array",
4729
+ "items": {
4730
+ "type": "object",
4731
+ "properties": {
4732
+ "app": {
4733
+ "type": "string",
4734
+ "pattern": "^[a-z0-9-]+$"
4735
+ },
4736
+ "kind": {
4737
+ "type": "string",
4738
+ "pattern": "^[a-z0-9-]+$"
4739
+ },
4740
+ "records": {
4741
+ "type": "integer",
4742
+ "minimum": 0
4743
+ }
4744
+ },
4745
+ "required": [
4746
+ "app",
4747
+ "kind",
4748
+ "records"
4749
+ ],
4750
+ "additionalProperties": false
4751
+ }
4752
+ },
4753
+ "columns": {
4754
+ "type": "array",
4755
+ "items": {
4756
+ "type": "string"
4757
+ }
4758
+ },
4759
+ "rows": {
4760
+ "type": "array",
4761
+ "items": {
4762
+ "type": "array",
4763
+ "items": {
4764
+ "anyOf": [
4765
+ {
4766
+ "type": "null"
4767
+ },
4768
+ {
4769
+ "type": "number"
4770
+ },
4771
+ {
4772
+ "type": "string"
4773
+ },
4774
+ {
4775
+ "type": "object",
4776
+ "properties": {
4777
+ "type": {
4778
+ "type": "string",
4779
+ "const": "blob"
4780
+ },
4781
+ "base64": {
4782
+ "type": "string"
4783
+ },
4784
+ "byteLength": {
4785
+ "type": "integer",
4786
+ "minimum": 0
4787
+ }
4788
+ },
4789
+ "required": [
4790
+ "type",
4791
+ "base64",
4792
+ "byteLength"
4793
+ ],
4794
+ "additionalProperties": false
4795
+ }
4796
+ ]
4797
+ }
4798
+ }
4799
+ },
4800
+ "rowCount": {
4801
+ "type": "integer",
4802
+ "minimum": 0
4803
+ }
4804
+ },
4805
+ "required": [
4806
+ "kinds",
4807
+ "columns",
4808
+ "rows",
4809
+ "rowCount"
4810
+ ],
4811
+ "additionalProperties": false
4812
+ },
4813
+ {
4814
+ "type": "object",
4815
+ "properties": {
4816
+ "outcome": {
4817
+ "type": "string",
4818
+ "const": "COPY_PARTIAL"
4819
+ },
4820
+ "remaining": {
4821
+ "type": "array",
4822
+ "items": {
4823
+ "type": "object",
4824
+ "properties": {
4825
+ "app": {
4826
+ "$ref": "#/$defs/output/anyOf/0/properties/kinds/items/properties/app"
4827
+ },
4828
+ "kind": {
4829
+ "$ref": "#/$defs/output/anyOf/0/properties/kinds/items/properties/kind"
4830
+ }
4831
+ },
4832
+ "required": [
4833
+ "app",
4834
+ "kind"
4835
+ ],
4836
+ "additionalProperties": false
4837
+ }
4838
+ }
4839
+ },
4840
+ "required": [
4841
+ "outcome",
4842
+ "remaining"
4843
+ ],
4844
+ "additionalProperties": false
4845
+ }
4846
+ ],
4847
+ "$schema": "http://json-schema.org/draft-07/schema#"
4848
+ }
4849
+ }
4850
+ },
4851
+ "postures": [
4852
+ "owner-openkey",
4853
+ "delegate-session",
4854
+ "local-owner-key"
4855
+ ],
4856
+ "effects": [
4857
+ "read"
4858
+ ],
4859
+ "sensitivity": {
4860
+ "input": true,
4861
+ "output": true
4862
+ },
4863
+ "exposure": {
4864
+ "cli": {
4865
+ "status": "excluded",
4866
+ "reason": "Personal apps use the hosted connector; the CLI skill keeps its existing commands."
4867
+ },
4868
+ "mcp": {
4869
+ "status": "required"
4870
+ },
4871
+ "skill": {
4872
+ "status": "required"
4873
+ },
4874
+ "docs": {
4875
+ "status": "required"
4876
+ }
4877
+ },
4878
+ "stableErrors": [
4879
+ "INPUT_INVALID",
4880
+ "OPERATION_NOT_FOUND",
4881
+ "OPERATION_VERSION_UNSUPPORTED",
4882
+ "PROFILE_NOT_FOUND",
4883
+ "PROFILE_POSTURE_NOT_ALLOWED",
4884
+ "PROFILE_OWNER_OPT_IN_REQUIRED",
4885
+ "PROFILE_MIGRATION_REQUIRED",
4886
+ "AUTH_REQUIRED",
4887
+ "PERMISSION_DENIED",
4888
+ "SESSION_NOT_FOUND",
4889
+ "PERMISSION_HINT_INVALID",
4890
+ "DELEGATION_ARTIFACT_INVALID",
4891
+ "DELEGATION_EXPIRED",
4892
+ "DELEGATION_AUDIENCE_MISMATCH",
4893
+ "DELEGATION_HOST_MISMATCH",
4894
+ "DELEGATION_REJECTED",
4895
+ "ENCRYPTION_NETWORK_UNRESOLVED",
4896
+ "NODE_UNREACHABLE",
4897
+ "NODE_ERROR",
4898
+ "STORAGE_QUOTA_EXCEEDED",
4899
+ "KV_NOT_FOUND",
4900
+ "KV_PRECONDITION_FAILED",
4901
+ "KV_CONFLICT",
4902
+ "KV_RESPONSE_TOO_LARGE",
4903
+ "SQL_QUERY_INVALID",
4904
+ "SQL_EXECUTION_FAILED",
4905
+ "SQL_RESULT_LIMIT_EXCEEDED",
4906
+ "SQL_VALUE_UNSAFE",
4907
+ "SECRET_READ_FAILED",
4908
+ "SECRET_DECRYPT_FAILED",
4909
+ "OUTPUT_INVALID",
4910
+ "INTERNAL_ERROR"
4911
+ ],
4912
+ "authority": {
4913
+ "dynamic": true
4914
+ }
4915
+ },
3569
4916
  {
3570
4917
  "id": "tinycloud.apps.read",
3571
4918
  "version": 1,