name: federation
requiredPermissions:
  - fetch
config:
  schema.config.properties:
    libraries:
      type: array
      items:
        type: object
        properties:
          import:
            type: string
            format: page-ref
          exclude:
            type: array
            items:
              type: string
              format: page-ref
            nullable: true
        required:
          - import
      nullable: true
functions:
  readFile:
    path: ./federation.ts:readFile
    pageNamespace:
      pattern: "^!.+"
      operation: readFile
  writeFile:
    path: ./federation.ts:writeFile
    pageNamespace:
      pattern: "^!.+"
      operation: writeFile
  deleteFile:
    path: ./federation.ts:deleteFile
    pageNamespace:
      pattern: "^!.+"
      operation: deleteFile
  getFileMeta:
    path: ./federation.ts:getFileMeta
    pageNamespace:
      pattern: "^!.+"
      operation: getFileMeta

  # Library management commands
  updateLibrariesCommand:
    path: library.ts:updateLibrariesCommand
    command:
      name: "Libraries: Update"
      requireMode: rw
  updateLibraries:
    path: library.ts:updateLibraries
    env: server